2009-07-29 30 views
37

Tôi muốn tạo một thẻ tập lệnh bởi jQuery.Tôi có thể tạo thẻ tập lệnh bằng jQuery không?

tôi sử dụng đoạn mã sau:

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

Nó không làm việc. Bạn sẽ làm gì để đạt được điều đó?

+0

Tôi chỉ quan tâm: tại sao bạn lại làm điều đó? Bạn đã chạy mã JavaScript, vậy tại sao bạn lại cần một khối khác? – Kobi

+7

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

+4

Tôi muốn tải một tệp javascript khác sau khi tải trang. – Billy

Trả lời

64

Bạn nên làm điều đó như vậy

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

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

Tôi đã thử nghiệm mã này và nó hoạt động. Cảm ơn. – Billy

+1

Bạn đang chào đón Billy. –

+3

có vẻ như một câu trả lời được chấp nhận đang đến? – geowa4

10

Lỗi này là trong bộ chọn:

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

Lưu ý rằng bạn cần phải thoát khỏi nhân vật thừa nhận trong chuỗi nối.

16

Tại sao bạn không sử dụng jQuery.getScript(url,[callback])

+3

Tôi muốn tải một javascript khác mà javascript nằm trong một tên miền khác. – Billy

+4

getScript sẽ vẫn hoạt động ... – James

+9

Đây phải là nhận xét chứ không phải là câu trả lời hoặc ít nhất phải được viết dưới dạng câu trả lời chứ không phải là câu hỏi. Không rõ ràng rằng 'getScript()' có thể làm mọi thứ có thể với việc tạo các thẻ script. Và nếu có, câu trả lời sẽ tốt hơn nhiều nếu nó thực sự nói điều đó. – hippietrail

33

Để tải từ một url:

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

Để tải từ mã nguồn hiện có:

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

+1 để hiển thị ví dụ bằng html thay vì chỉ URL –

0

Điều này có thể giúp đỡ, người kết thúc ở đây sau khi 8 năm

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

Lý do duy nhất bạn không thể làm $('<script></script>') là do chuỗi không được phép bên trong javascript vì lớp DOM không thể phân tích cú pháp js là gì và html là gì.

Các vấn đề liên quan