繁体   English   中英

无法在IE6中包含来自外部javascript文件的javascript文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM