2010-03-21 3 views
2

je charge, en utilisant le JQuery ajax() méthode, une page externe à la fois html et javascript code:méthode JQuery .html() et les scripts externes

<script type="text/javascript" src="myfile.js"></script> 
<p>This is some HTML</p> 
<script type="text/javascript"> 
    alert("This is inline JS"); 
</script> 

et fixant les résultats dans un élément div, en utilisant la méthode html().

Bien que la méthode html() évalue correctement le code JS en ligne, elle ne télécharge et n'évalue pas le fichier JS externe "myfile.js".

Un conseil pour ce problème?

Répondre

2

Si vous contrôlez la page externe, vous pouvez modifier cette

<script type="text/javascript" src="myfile.js"></script> 

à

<script type="text/javascript" src="http://host/path/myfile.js"></script> 

Demo: http://jsbin.com/ucomu3/3 charges http://jsbin.com/otopi/3 via $.ajax et définit les données renvoyées par html()http://jsbin.com/otopi/3 contient une ligne tag de script et un avec une URL complète dans l'attribut src qui pointe vers http://jsbin.com/uyova3

Donc, si vous ouvrez http://jsbin.com/ucomu3/3 vous voyez « Ceci est du HTML » et deux alertes qui se disent: « Je suis les js locaux externes » et « Ceci est JS en ligne »

+0

La modification du chemin src ne résout en fait pas le problème. Il semble que JQuery, lors de la définition des résultats dans la div avec la méthode html(), ne télécharge pas les scripts externes à partir de l'emplacement spécifié, et n'évalue pas son contenu. – Mark

+0

Oui, parce que ce n'est pas le travail de JQuery. C'est le travail du navigateur. – middus

+0

La méthode jQuery.getScript(), comme indiqué dans la documentation, "Charger un fichier JavaScript à partir du serveur à l'aide d'une requête HTTP GET, puis l'exécuter." Si c'est possible, j'éviterais d'analyser les balises "script" à partir des résultats, puis j'appellerais explicitement la méthode getScript() pour chacun d'entre eux. – Mark

1

Essayez d'utiliser une adresse absolue le src -attribut de votre <script>.

Questions connexes