2009-07-29 19 views
37

Voglio creare un tag script da jQuery.Posso creare un tag script da jQuery?

Io uso il seguente codice:

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

Non funziona. Cosa farai per ottenerlo?

+0

Sono solo interessato: perché lo faresti? Stai già utilizzando il codice JavaScript, quindi perché hai bisogno di un altro blocco? – Kobi

+7

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

+4

Voglio caricare un altro file javascript dopo aver caricato la pagina. – Billy

risposta

64

Si dovrebbe fare così in modo

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

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

Ho testato questo codice e funziona. Grazie. – Billy

+1

Sei il benvenuto Billy. –

+3

sembra una risposta accettata sta arrivando? – geowa4

10

L'errore è nel selettore:

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

Nota che si deve sfuggire i caratteri non consentite nella stringa allegata.

16

Perché non utilizza jQuery.getScript(url,[callback])

+3

Voglio caricare un altro javascript che il javascript è in un altro dominio. – Billy

+4

getScript funzionerà ancora ... – James

+9

Questo dovrebbe essere un commento piuttosto che una risposta, o almeno dovrebbe essere scritto come risposta piuttosto che come una domanda. Non è certo che 'getScript()' possa fare tutto ciò che è possibile con la creazione di tag script. E se lo è, la risposta sarebbe molto meglio se in realtà lo affermasse. – hippietrail

33

Per caricare da un URL:

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

Per caricare dal codice sorgente esistente:

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

+1 per mostrare un esempio con html anziché solo URL –

0

Questo può aiutare, che finiscono per qui dopo 8 anni

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

L'unica ragione per cui non è possibile fare $('<script></script>') è perché la stringa non è consentita all'interno di javascript perché il livello DOM non può analizzare cosa è js e cosa è html.

Problemi correlati