2011-07-13 49 views
7

我正在试验Modernizer.load。可以modernizr异步加载脚本,但按顺序执行它们吗?

我有这样的:

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

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

在modernizr文档中的示例中,load([])可以采用'complete'属性,其参数可以是一个函数,可以在完成其他所有操作时加载另一个脚本。但是,如果我在这里使用函数来加载我的后依赖性脚本,那么它将以串行方式加载。该文件明确指出,这可能会损害性能。但是,如果我异步加载所有内容,我不知道它们的运行顺序。当然,我需要我的依赖先行。

回答

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()此时的基本属性)。