脚本是否可靠?

时间:2012-02-07 11:15:06

标签: javascript html5

目前,我通过Amazon Cloudfront将所有javascripts组合在一个大文件中。但是由于jQuery太大了,我正在考虑使用Google提供的版本。当然,如果我没有读过这篇文章,我会在页面底部包含两个脚本标记并添加defer属性:http://hacks.mozilla.org/2009/06/defer/

如果我理解正确,defer属性只能在Firefox中正常工作,而其他所有浏览器(当时)都会以随机顺序执行脚本。真的吗?当然我的脚本依赖于jQuery,所以它必须在我的脚本之前执行。

3 个答案:

答案 0 :(得分:1)

2017年,它似乎足够可靠,可以停止避免这5个字母,而不是17个班轮的解决方法。浏览器对defer的支持为quite good these days

答案 1 :(得分:0)

如果你不确定它的支持,我不确定我是否愿意推迟。只需这样做:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script>  
<script>window.jQuery || document.write("<script src='localJSFolder/jquery-1.6.4.min.js'></script>")</script>

所有现代浏览器都应该按顺序运行脚本。这是使用Google的CDN进行本地回退的最简单方法。

答案 2 :(得分:0)

我会建议这样的事情(使用window.onload真正表现得像延迟):

$(window).load(function () {
    var script = document.createElement("script");
    script.type = "text/javascript";
    if (script.readyState) { // IE
        script.onreadystatechange = function () {
            if (script.readyState === "loaded" || script.readyState === "complete") {
                script.onreadystatechange = null;
                // do something
            }   
        };  
    }   
    else { // Others
        script.onload = function() {
            // do something (the same thing as above)
        };  
    }   
    script.src = file;
    document.getElementsByTagName("head")[0].appendChild(script);
});

如果您需要多个文件,请输入循环并将文件设置为文件[x]