document.head.appendChild(element) 即 ie7 和 ie8

Posted

技术标签:

【中文标题】document.head.appendChild(element) 即 ie7 和 ie8【英文标题】:document.head.appendChild(element) ie ie7 and ie8 【发布时间】:2013-06-10 14:47:42 【问题描述】:

在 ie7/8 中将脚本附加到头部时遇到问题

这是我正在使用的代码

var requireTag = document.createElement('script');
requireTag.setAttribute('type',         'text/javascript');
requireTag.setAttribute('src',          link+ 'require.js');
requireTag.setAttribute('data-main',    link+ 'data');

document.head.appendChild(requireTag);

这是我得到的错误

SCRIPT5007: Unable to get value of the property
'appendChild': object is null or undefined  

我找到了这个createElement error in IE8 并尝试更新我的代码以拥有

var appendChild = document.head.appendChild(requireTag);

但仍然得到同样的错误。有人可以帮忙吗?

【问题讨论】:

document 对象的 head 属性是在 html5 中引入的,因此任何不完全符合 HTML5 的浏览器都可能不支持它。 HTML5 规范是一个“活的”文档,因此无法指定它是何时引入的(即在哪个版本中),这使得很难确定哪些浏览器可能不支持它,除非通过反复试验。 【参考方案1】:

根据 https://developer.mozilla.org/en-US/docs/Web/API/document.head 和 http://msdn.microsoft.com/en-us/library/gg593004%28v=vs.85%29.aspx ,document.head 不适用于 IE

document.getElementsByTagName('head')[0].appendChild(requireTag);

【讨论】:

MDN 不是 Microsoft 应用程序的权威参考,最好参考 MSDN(它说同样的话,但更权威的来源)。【参考方案2】:

我相信这些浏览器不支持document.head

试试这个:

var head = document.getElementsByTagName("head")[0];
head.appendChild(requireTag);

【讨论】:

以上是关于document.head.appendChild(element) 即 ie7 和 ie8的主要内容,如果未能解决你的问题,请参考以下文章

动态样式

remoteLoad.js

为啥在html的script标签中写如下代码可以实现javascript脚本的异步加载?