2013-09-30 63 views
0

在我的頁面上運行後續腳本之前,我有許多測試條件和文件要加載。有沒有辦法在所有文件加載後觸發回調?在modernizr/yepnope加載所有文件後執行回調

以下是由this post建議並傳達我的意圖,但實際上並沒有工作。在1.js或2.js完成加載之前,完整的函數正在觸發。

Modernizr.load([ 
    { 
     test: App.isSmallScreen, 
     yep: '1.js', 
     nope: '2.js' 
    }, 
    { 
     test: App.isTouch, 
     yep: '3.js' 
    }, 
    { 
     test: Modernizer.csstransitions, 
     nope:4.js 
    }, 
    { 
     complete: animationInit 
    } 
]); 
+0

這聽起來很棘手,我不確定您是否可以使用該框架。有什麼可能的選擇是有一個接收函數被1,2,3,4等調用(雖然這有點混亂),並且只有在收到所有函數後才調用完整函數。呃,對不起,如果這是解決方案。 –

+0

當前的解決方案是將所有測試嵌套爲回調函數。這可能不那麼凌亂:) –

+0

哎呀。 BTW並不是所有這些都會在'onload'事件之前加載?在此之前是否必須調用animationInit? –

回答

0

對於這樣一個便宜的竅門事先道歉,但這是我能想到的最好的。它絕對可以改善。

這可能是相當直接的嵌入或擴展Modernizr建立在一個「完成」事件以某種方式做到這一點更乾淨。

var completed = [] 
var complete = function(i) { 
    completed.push(i) 
    if (completed.length === 3) animationInit(); 
} 

Modernizr.load([ 
    { 
     test: App.isSmallScreen, 
     yep: '1.js', 
     nope: '2.js', 
     complete: function() { complete(1); } 
    }, 
    { 
     test: App.isTouch, 
     yep: '3.js' 
     complete: function() { complete(2); } 
    }, 
    { 
     test: Modernizer.csstransitions, 
     nope:4.js 
     complete: function() { complete(3); } 
    } 
]); 
相關問題