0

我有一大堆需要按顺序加载的 javascript 文件。但是,其中一个没有加载到 ie7 中。

这是执行加载的函数:

function loadScript(url, callback){
    var head = document.getElementsByTagName("head")[0];
    var script = document.createElement("script");
    script.src = url;

    // Attach handlers for all browsers
    var done = false;
    script.onload = script.onreadystatechange = function()
    {
            if( !done && ( !this.readyState 
                                    || this.readyState == "loaded" 
                                    || this.readyState == "complete") )
            {
                    done = true;

                    // Continue your code
                    callback();

                    // Handle memory leak in IE
                    script.onload = script.onreadystatechange = null;
                    head.removeChild( script );
            }
    };

    head.appendChild(script);
}

函数调用:

loadScript('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js',function(){
    loadScript('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js',function(){
        loadScript('http://XXX/js/data.php?rand='+Math.random(),function(){
            loadScript('http://XXX/js/jquery.inject.js?rand='+Math.random(),function(){
                console.log('a');
                loadScript('XXX/js/press.js?rand='+Math.random(),function(){
                    console.log('b');
                    inject_press();
                });

            });
        });
    });
});

不加载我 jquery.inject.js 的文件,谁的代码是

console.log('y');

jQuery.prototype.inject = function(a){
    ...
}

这同样适用于除ie7之外的所有浏览器。输出是

a
b
4

1 回答 1

0

这不是加载 ECMAscript 文件的最佳方式。我会命名这些文件以对其进行排序,然后使用 ASP.NET 4.5 捆绑加载。

于 2012-06-25T14:59:05.297 回答