2009-07-29 11 views
37

Chcę utworzyć znacznik skryptu przez jQuery.Czy mogę utworzyć znacznik skryptu przez jQuery?

używam następujący kod:

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

to nie działa. Co zrobisz, aby to osiągnąć?

+0

Jestem tylko zainteresowany: dlaczego miałbyś to zrobić? Już używasz kodu JavaScript, więc dlaczego potrzebujesz kolejnego bloku? – Kobi

+7

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

+4

Chcę załadować inny plik javascript po załadowaniu strony. – Billy

Odpowiedz

64

Należy to zrobić jak tak

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

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

Przetestowałem ten kod i to działa. Dzięki. – Billy

+1

Nie ma za co Billy. –

+3

brzmi, jakby nadchodziła zaakceptowana odpowiedź? – geowa4

10

Błąd znajduje się selektor:

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

Zauważ, że musisz uciec z zablokowanych znaków w załączonym sznurkiem.

16

Czemu nie używając jQuery.getScript(url,[callback])

+3

Chcę załadować inny javascript, który javascript znajduje się w innej domenie. – Billy

+4

getScript będzie nadal działał ... – James

+9

Powinno to być komentarzem, a nie odpowiedzią, lub przynajmniej powinno być napisane raczej jako odpowiedź niż pytanie. Nie jest pewne, czy 'getScript()' może zrobić wszystko, co jest możliwe przy tworzeniu znaczników skryptów. A jeśli tak, odpowiedź byłaby o wiele lepsza, gdyby rzeczywiście o tym mówiła. – hippietrail

33

Aby załadować z URL:

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

załadować z istniejącego kodu źródłowego:

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

+1 za wyświetlenie przykładu z html zamiast po prostu URL –

0

To może pomóc, który kończy się tutaj po 8 lat

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

Jedynym powodem, dla którego nie można wykonać $('<script></script>') jest to, że łańcuch nie jest dozwolony wewnątrz javascript, ponieważ warstwa DOM nie może przeanalizować, co to jest js i co to jest html.

Powiązane problemy