2009-07-29 8 views
37

Je souhaite créer un tag de script par jQuery.Puis-je créer une balise de script par jQuery?

J'utilise le code suivant:

$("<body>").append("<script></script>"); 

Il ne fonctionne pas. Que ferez-vous pour y parvenir?

+0

Je suis juste intéressé: pourquoi voudriez-vous faire cela? Vous utilisez déjà du code JavaScript, alors pourquoi avez-vous besoin d'un autre bloc? – Kobi

+7

http://stackoverflow.com/questions/610995/jquery-cant-append-script-element –

+4

Je veux charger un autre fichier javascript après avoir chargé la page. – Billy

Répondre

64

Vous devriez le faire comme si

var script=document.createElement('script'); 
script.type='text/javascript'; 
script.src=url; 

$("body").append(script); 
+2

J'ai testé ce code et cela fonctionne. Merci. – Billy

+1

De rien Billy. –

+3

sonne comme une réponse acceptée est à venir? – geowa4

10

L'erreur est dans le sélecteur:

$("body").append("<script>alert('hello world');<\/script>"); 

Notez que vous devez échapper aux caractères unallowed dans la chaîne jointe.

16

Pourquoi vous n'utilisez pas jQuery.getScript(url,[callback])

+3

Je veux charger un autre javascript dont le javascript est dans un autre domaine. – Billy

+4

getScript fonctionnera toujours ... – James

+9

Cela devrait être un commentaire plutôt qu'une réponse, ou il devrait au moins être écrit comme une réponse plutôt que comme une question. Il n'est pas certain que 'getScript()' puisse faire tout ce qui est possible avec la création de tags de script. Et si c'est le cas, la réponse serait beaucoup mieux si elle l'affirmait. – hippietrail

33

Pour charger à partir d'une URL:

$("body").append($("<script />", { 
    src: url 
})) 

Pour charger à partir du code source existant:

$("body").append($("<script />", { 
    html: code 
})) 
+4

+1 pour montrer l'exemple avec html au lieu de simplement l'URL –

0

Cela peut aider, qui finissent ici après 8 ans

$('<script>alert("hi");</' + 'script>').appendTo(body); 

La seule raison pour laquelle vous ne pouvez pas faire $('<script></script>') est que la chaîne n'est pas autorisée dans javascript car la couche DOM ne peut pas analyser ce qui est js et ce qui est html.

Questions connexes