[英]Cannot include a javascript file from an external javascript file in IE6
我的问题是,我需要动态地从另一个外部javascript文件中包含一个javascript文件。 我正在尝试通过使用此功能:
function addCustomScriptTag(url) {
var scriptTag=document.createElement('script');
scriptTag.type = 'text/javascript';
scriptTag.src=url;
var myElement = document.getElementsByTagName("head")[0];
myElement.appendChild(scriptTag);
}
该问题仅在IE6中发生,在IE6中尝试附加到head元素会导致“操作中止”错误。
任何帮助,将不胜感激
这取决于您何时将其添加到head DOM元素中。 在所有版本的IE中,都会中止操作,因为您试图在该DOM元素完成加载之前通过JavaScript修改DOM元素( http://support.microsoft.com/default.aspx/kb/927917) 。
如果您需要立即加载此脚本,则可以执行旧式document.write以添加脚本标签,例如
<head>
<script>document.write('<script src='yourUrl.js'><\/scr'+'ipt>');</script>
</head>
否则,您可以通过普通的旧JavaScript或通过类似jQuery的框架la la document.ready在主体上调用函数。
然后将其附加到身体。 Javascript不必排在文档的<head>中。
考虑使用类似jQuery的库,然后仅使用getScript
的等效项(如果不使用jQuery)。 这将在大多数情况下处理跨浏览器的怪癖和不一致之处。
我从jQuery来源窃取:
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = s.url;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function(){
if ( !done && (!this.readyState ||
this.readyState == "loaded" || this.readyState == "complete") ) {
done = true;
success();
complete();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
head.removeChild( script );
}
};
head.appendChild(script);
我认为这是因为IE6不支持getElementsByTagName()
,请尝试将其替换为document.body
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.