modernizr可以异步加载脚本但是按顺序执行它们吗?

时间:2011-07-13 02:25:45

标签: modernizr

我正在尝试使用Modernizer.load。

我有这个:

Modernizr.load([
      {
         load  : ['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js']
      }
      ]);

如果我理解正确,我可以使用这样的代码异步加载脚本。但是,我可以按顺序执行它们吗?如果myscript.js需要首先加载jquery对象怎么办?

在modernizr文档的示例中,load([])可以采用'complete'属性,其参数可以是一个函数,可以在其他所有内容完成时加载另一个脚本。但是,如果我在这里使用一个函数来加载我的post-dependancy脚本,那么它将以串行方式加载。文档明确指出这可能会损害性能。

但是,如果我异步加载所有内容,我对它们的运行顺序一无所知。当然,我需要先依靠我的依赖。

1 个答案:

答案 0 :(得分:12)

如果您使用Modernizr.load,则您通过嵌入式列表/哈希包含的所有文件都将异步加载,但它们各自已执行你把它们放入的顺序。

因此,您的示例将异步加载文件,但按以下顺序执行:

1: /js/jquery-1.6.1.js
2: /js/jquery.tools.min.js
3: /js/myscript.js`

顺便说一句,你可以简化你的例子:

Modernizr.load(['/js/jquery-1.6.1.js', '/js/jquery.tools.min.js', '/js/myscript.js']);

有关详细信息,请参阅文档中的Modernizr.load() tutorial,或查看Yepnopejs.com(目前这是Modernizr.load()的基本内容。)