目前,我通过Amazon Cloudfront将所有javascripts组合在一个大文件中。但是由于jQuery太大了,我正在考虑使用Google提供的版本。当然,如果我没有读过这篇文章,我会在页面底部包含两个脚本标记并添加defer属性:http://hacks.mozilla.org/2009/06/defer/
如果我理解正确,defer属性只能在Firefox中正常工作,而其他所有浏览器(当时)都会以随机顺序执行脚本。真的吗?当然我的脚本依赖于jQuery,所以它必须在我的脚本之前执行。
答案 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]