使用document.head.appendChild()附加具有SRC属性的脚本标记?

时间:2014-03-05 23:24:16

标签: javascript

以下代码无效的原因?

alert("1");
document.head.appendChild("<script type=\"text/javascript\" src=\"https://getfirebug.com/firebug-lite.js\"></script>");
alert("2");

(我知道它正在破裂,因为1被警告但不是2。)

完成同样事情的正确方法是什么?即,将脚本标记附加到文档头,其中标记使用SRC属性获取.js文件。我不希望它写内联的JavaScript。

谢谢!

2 个答案:

答案 0 :(得分:25)

element.appendChild期望节点不是字符串。您应首先创建节点并设置属性,然后附加它。

element.appendChild Reference

var sc = document.createElement("script");
sc.setAttribute("src", "https://getfirebug.com/firebug-lite.js");
sc.setAttribute("type", "text/javascript");
document.head.appendChild(sc);

对于不支持document.head

的旧浏览器(IE&lt; 9等)
document.getElementsByTagName("head")[0].appendChild(sc);

答案 1 :(得分:0)

这将完成原始海报所需的操作,而无需创建新对象。

document.head.innerHTML += "<script type=\"text/javascript\" src=\"https://getfirebug.com/firebug-lite.js\"></script>";

该脚本将被添加到现有标题的末尾,而这可能不是您想要的。

信不信由你,这会将您的脚本放在标题的开头,而不会删除现有的标题:

document.head.innerHTML = "<script type=\"text/javascript\" src=\"https://getfirebug.com/firebug-lite.js\"></script>" + document.head.innerHTML;