Javascript 异步加载脚本并具有回退功能
我的目标是在浏览器支持延迟或异步时异步加载脚本。Javascript 异步加载脚本并具有回退功能,javascript,deferred-execution,Javascript,Deferred Execution,我的目标是在浏览器支持延迟或异步时异步加载脚本。 如果浏览器既不支持也不支持,我不关心异步加载(不是我的错)。 我想确保任何脚本只有在满足其先决条件(例如jQuery加载)时才会执行。 我希望在加载其他脚本时加载脚本(仅当浏览器支持延迟或异步时) 我只想使用浏览器的API来实现这一点。我不希望浏览器加载任何可靠(或不可靠)的脚本,不管它们有多小 这必须与IE8+、Gecko v.1.9.1+(如firefox 3.5.*或firefox 9.0+、webkit(如chrome)、presto(如
如果浏览器既不支持也不支持,我不关心异步加载(不是我的错)。
我想确保任何脚本只有在满足其先决条件(例如jQuery加载)时才会执行。 我希望在加载其他脚本时加载脚本(仅当浏览器支持延迟或异步时) 我只想使用浏览器的API来实现这一点。我不希望浏览器加载任何可靠(或不可靠)的脚本,不管它们有多小 这必须与IE8+、Gecko v.1.9.1+(如firefox 3.5.*或firefox 9.0+、webkit(如chrome)、presto(如Opera)配合使用。对于那些我没有提到的版本,我指的是最新的稳定版本 如果可能的话,我不想要任何不容易的脚本。我只是需要一些简单的东西来做这项工作。这意味着:
如果可能的话,我不希望像AJAX调用或带有某些方法的奇特对象这样的东西像我在其他页面中看到的那样进行一些变通。这些是为了在不支持异步或延迟的浏览器中强制异步加载脚本
我重复一遍:我不需要任何花哨的东西来使脚本异步。如果浏览器不支持延迟或异步,我不在乎。我只关心脚本的加载,以便在满足其先决条件后执行每个部分,如果浏览器支持它,则首先使用async或defer,,使用诸如
jQuery
之类的库,使整个过程在浏览器中变得非常简单和可靠。它可能会增加页面的下载大小(非常小的数量),但高效的脚本加载/执行所获得的速度几乎总是超过这一点
关于脚本异步和延迟属性:
async=“async”
:在IE8/9根本不支持的脚本标记上,脚本立即执行(根据您的问题,这是正常的)defer=“defer”
:按照延迟脚本在HTML中出现的顺序,在DOM就绪之前,将开始加载脚本上的标记。但是,在Firefox上,脚本通常会在dom就绪后执行。这种差异使得defer
作为一种确保在dom就绪后执行函数之前加载脚本的方法不可靠jQuery时的一般指导原则
:
中放置jQuery$.getScript()
的形式执行所有其他脚本$.getScript
(这将是一个非阻塞请求,但在客户端收到文件后将立即处理)$.getScript()
调用包装到$(function(){})代码>
$(函数(){
$.getScript(“script.js”,function()){
for(var i=0;i
首先,使用诸如jQuery
之类的库可以使整个过程变得非常简单,而且跨浏览器也非常可靠。它可能会增加页面的下载大小(非常小的数量),但高效的脚本加载/执行所获得的速度几乎总是超过这一点
关于脚本异步和延迟属性:
async=“async”
:在IE8/9根本不支持的脚本标记上,脚本立即执行(根据您的问题,这是正常的)defer=“defer”
:按照延迟脚本在HTML中出现的顺序,在DOM就绪之前,将开始加载脚本上的标记。但是,在Firefox上,脚本通常会在dom就绪后执行。这种差异使得defer
作为一种确保在dom就绪后执行函数之前加载脚本的方法不可靠jQuery时的一般指导原则
:
中放置jQuery$.getScript()
的形式执行所有其他脚本$.getScript
(这将是非阻塞请求
$(function() {
$.getScript("script.js", function() {
for(var i = 0; i < myCallbacks.length;i++) {
myCallbacks[i]();
}
});
});