2012-03-02 77 views
1

我正在嘗試使用insertBefore向dom添加一個腳本。動態添加一個腳本標記到頁面

當通過控制檯運行命令時,腳本按預期執行,但是當通過代碼運行相同的代碼段時,它拒絕執行。

這是我正在使用的代碼。

var el = document.getElementsByTagName('div')[0]; 
var s = document.createElement('script'); 
s.text = 'alert("abc");' 
el.parentNode.insertBefore(s, el.nextSibling) 



el.parentNode.replaceChild(s.childNodes[0], el); 
el = s.childNodes[0]; 
for(var i = s.childNodes.length - 1; i >= 0 ; i--) 
    el.parentNode.insertBefore(s.childNodes[i], el.nextSibling); 

這是添加腳本到DOM,但不執行it.a

+0

你是否在DOM準備好之前運行代碼? – 2012-03-02 08:10:35

+0

嘗試在文檔底部添加腳本,在關閉之前標記 – Liviu 2012-03-02 08:12:22

回答

0

我不能複製您的問題:

http://jsfiddle.net/treeface/8F8bK/

你確定你的代碼在DOM完全加載後運行?如果你不是你可能想要這樣運行這樣的代碼:

window.onload = function() { 
    var el = document.getElementsByTagName('div')[0]; 
    var s = document.createElement('script'); 
    s.text = 'alert("abc");' 
    el.parentNode.insertBefore(s, el.nextSibling) 
}; 
+0

嗨是的代碼是DOM準備好後運行。我允許用戶在瀏覽器中修改他的HTML。輸入動態添加到dom。我將添加更多代碼示例以使其更清晰。 – Amit 2012-03-02 08:16:13