2011-07-13 79 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()此時的基本屬性)。