2012-11-14 30 views
5

Tôi đang sử dụng Javascript để tạo thêm JavaScript tùy chỉnh và sau đó thêm nó vào thẻ HEAD. Mã bên dưới hoạt động tốt khi thêm tệp javascript, nhưng điều gì xảy ra nếu tập lệnh ở trong một biến vừa tạo?Làm cách nào để thêm javascript động vào thẻ đầu từ chuỗi chứ không phải tệp?

var scriptTag = document.createElement("script"); 
scriptTag.setAttribute("type", "text/javascript"); 
scriptTag.setAttribute("src", "myfile.js"); 
document.getElementsByTagName("head")[0].appendChild(scriptTag); 

Cảm ơn sự quan tâm của bạn.

+1

Trong một biến như thế nào? Mã nguồn dưới dạng chuỗi? –

Trả lời

3
// script text 
var txt = "alert('foo');"; 

var scriptTag = document.createElement("script"); 
scriptTag.setAttribute("type", "text/javascript"); 

    // append it in a text node 
scriptTag.appendChild(document.createTextNode(txt)); 
document.getElementsByTagName("head")[0].appendChild(scriptTag); 

FWIW, bạn không cần một thẻ script cho việc này. Bạn có thể sử dụng hàm tạo Function thay thế.

var txt = "alert('foo');"; 

Function(txt)(); 
+0

Đã nhận được! TY –

+0

@VincentJames: Bạn được chào đón. –

+1

+1 cho createTextNode –

3
var scriptTag = document.createElement("script"); 
scriptTag.setAttribute("type", "text/javascript"); 

scriptTag.innerHTML = "What you want here";///.... 

document.getElementsByTagName("head")[0].appendChild(scriptTag); 

Live DEMO

+0

Cảm ơn Gordon, khi tôi làm điều đó tôi nhận được một chức năng không tìm thấy. Khi tôi kiểm tra phần tử với Chrome, nó hiển thị thẻ SCRIPT mới trong HEAD, nhưng nó luôn trống và chuỗi được gán cho .innerHTML không có giá trị. –

+1

@VincentJames: Bạn sẽ muốn loại bỏ thuộc tính '" src "' đang được thêm vào. –

+0

@VincentJames. Kiểm tra bản demo. – gdoron

0

Cả hai câu trả lời có vẻ ok đặc biệt là từ @gdoron.

Tôi đã viết một ví dụ đơn giản trong trường hợp bạn muốn làm điều tương tự trong jquery: http://jsfiddle.net/bitoiu/EKpGg/

Snippet:

$(function(){ 

    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    // script.url = 'some valid url'; 
    $('head').append(script); 
});​ 
Các vấn đề liên quan