Chargement des tags de script via AJAX

J'ai une balise div qui est remplie de script via un appel ajax, mais le script ne s'exécute pas.

Existe-t-il un moyen de faire exécuter le script?

Si vous utilisez la méthode .html de jQuery, elle analyse la balise du script et l'évite:

 $("div").html('<script type="text/javascript">alert("This should work")</script>'); 

Si jQuery n'est pas une option, vous pouvez l'écrire en utilisant soit (1) une expression régulière, soit (2) analyser l'arborescence des DOM et trouver les balises de script. (# 2 est la façon dont jQuery le fait)

C'est toujours une bonne idée de séparer le contenu du code. Chargez le contenu via AJAX et code en insérant les balises <script> . Si vous utilisez jQuery, utilisez $.getScript() pour charger des scripts de manière dynamique.

Je suppose que vous écrivez une étiquette de script dans innerHTML directement

Cela ne fonctionnera pas.

 document.body.innerHTML+="<script>alert(1)</scr"+"ipt>"; 

Vous devez écrire à l'aide de fonctions DOM comme celle-ci

 var tag = document.createElement("script"); tag.innerHTML="alert(1)"; document.body.appendChild(tag); //can be append to any object other than body 

Ou mieux utiliser jQuery

Si vous définissez innerHtml de div, les balises de script doivent être exécutées. J'utilise $ ("# divid"). Load () pour charger le contenu dynamique et les tags de script s'exécutent.

Essayez d'utiliser JQuery si cela ne fonctionne pas en utilisant javascript simple.