J'ai 2 divs dans mon HTML.
<div id="div1"></div>
<div id="div2"></div>
En cliquant sur le "div2" je veux charger un fichier javascript externe disons par exemple " https://abcapis.com/sample.js ".
J'ai essayé d'inclure le fichier JS sur l'événement onclick comme ci-dessous,
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://abcapis.com/sample.js";
document.getElementsByTagName("head")[0].appendChild(script);
Cela incluait la balise de script dans la section head mais ne se chargeait pas car la balise de script sera chargée uniquement lors du chargement de la page (corrigez-moi ici si je me trompe).
Y a-t-il une autre façon de procéder?.
Merci d'avance.
L'utilisation de la fonction $ .getScript () de jQuery devrait faire le travail pour vous.
http://api.jquery.com/jQuery.getScript/
Voici une tranche d'exemple de code:
$("button").click(function(){
$.getScript("demo_ajax_script.js");
});
Si vous n'utilisez pas jQuery, vous allez devoir apprendre à utiliser AJAX pour charger dynamiquement un nouveau script dans votre page.
Votre code fonctionne presque. Vous devez utiliser .setAttribute
. Voici mon code de travail. J'ai utilisé jQuery comme script:
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'jquery.min.js');
document.head.appendChild(script);
Et ça va le faire.
ÉDITER:
Quelques informations supplémentaires. Lorsque vous faites quelque chose comme script.type = 'text/javascript'
vous définissez une propriété sur l'objet mais ce n'est pas nécessairement la même chose que d'associer cette propriété à un attribut de nœud réel.
Utilisez-vous jQuery? Si c'est le cas, vous pouvez essayer $. GetScript () .
Vous pourriez également vouloir vérifier cela réponse . Mais en gros, vous pouvez faire quelque chose comme ça:
<a href='linkhref.html' id='mylink'>click me</a>
<script type="text/javascript">
var myLink = document.getElementById('mylink');
myLink.onclick = function(){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "Public/Scripts/filename.js.";
document.getElementsByTagName("head")[0].appendChild(script);
return false;
}
</script>
$("button").click(function(){
$.getScript("demo_ajax_script.js");
});
Une information que j'ai manquée était que le chemin doit être absolu.