2012-03-02 44 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

相关问题