2010-09-01 68 views
11

我要動態添加JavaScript到現有腳本元素一樣的東西:我可以動態地添加JavaScript到現有腳本元素

var se = document.createElement('script'); 
se.setAttribute('type', 'text/javascript'); 
se.innerHTML = 'alert(1)'; 
document.getElementsByTagName('head').item(0).appendChild(se); 

有趣的部分是se.innerHTML = 'alert(1)';,如果它是有效的?如果不是,我該如何以正確的方式做到這一點?

+2

我嘗試了,將所述''

2

如果文本包含任何可以解釋爲HTML的內容(如<),則將使用innerHTML。這將是更好地追加一個(或多個)文本節點:

var se = document.createElement('script'); 
se.setAttribute('type', 'text/javascript'); 
se.appendChild(document.createTextNode('alert(1)')); 
document.getElementsByTagName('head').item(0).appendChild(se); 
17

所有瀏覽器當前都支持javascript 文本屬性,並且會在將新腳本元素(不帶src屬性)添加到文檔時評估文本。

innerHTML或將子節點添加到腳本元素不會評估所有瀏覽器中的腳本。

function addCode(code){ 
    var JS= document.createElement('script'); 
    JS.text= code; 
    document.body.appendChild(JS); 
} 

//測試用例

var s= 'document.body.ondblclick=function(e){\n'+ 
'e=window.event? event.srcElement:e.target;\n'+ 
'alert(e.id || e.tagName);\n'+ 
'}\nalert("ready to double click!");'; 

addCode(s); 
+1

太棒了!完美的作品! – 2013-08-01 08:40:27

+0

完美工作時,所有其他方法注入代碼到我的網頁(加載後)失敗! – 2015-11-04 12:38:23

相關問題