我在IE中使用此代码时遇到问题(使用Chrome似乎工作正常):
<html>
<body>
<script type="text/javascript">
var scriptContent = "var whatever=1";
var _js = document.createElement('script');
_js.setAttribute('type', 'text/javascript');
textNode = document.createTextNode(scriptContent);
_js.appendChild(textNode);
document.getElementsByTagName('body')[0].appendChild(_js);
</script>
</body>
</html>
我在Internet Explorer(IE9)中遇到的错误是:“语句”_js.appendChild(textNode)上的“意外调用方法或访问属性”。
有没有办法解决这个问题?
答案 0 :(得分:5)
正如您所见,IE中的here appendChild()
未应用于<script>
- 元素。
(好像IE9支持它,但它取决于浏览器模式)
Nivas之前有一个正确的答案,遗憾的是它已被删除。 在IE中使用
_js.text = scriptContent;
答案 1 :(得分:3)
您的脚本在DOM准备好之前正在执行,因此获取<body>
标记是竞争条件。实际上我在Chrome 15和Firefox 8中遇到了同样的错误。
您可以在加载页面后调用代码works,例如在函数中
<a href="#" onclick="return append()">append</a>
function append() {
var scriptContent = "var whatever=1";
var _js = document.createElement('script');
_js.setAttribute('type', 'text/javascript');
textNode = document.createTextNode(scriptContent);
_js.appendChild(textNode);
document.getElementsByTagName('body')[0].appendChild(_js);
return false;
}