2012-08-29 33 views
3

我有一個使用Modernizr.load(又名YepNopeJS)加載各種外部腳本的站點。其中一個腳本是一個小統計腳本(3,5- KB未壓縮)用一個非常簡單的回調函數:YepNopeJS:在微型JS文件完全加載之前觸發的回調

Modernizr.load({ 
    load: 'http://res.xtractor.no/x.js', 
    callback: function() { _pxReg(); } 
}); 

_pxReg簡直是在x.js腳本中定義的功能。在我的頁面的大約50%中,收到錯誤消息「未定義變量:_pxReg」(Opera 12)或「_pxReg未定義」(Internet Explorer 9)。 Firefox 15和Chrome 22從不出錯。重新加載頁面時不會出現該錯誤。

這似乎是某種時間錯誤。在IE開發人員工具中,錯誤發生時x.js文件的來源爲空。這似乎與YepNope(http://yepnopejs.com/#twice)中的雙重請求「bug」有關,因爲在IE中,您會得到兩個對每個加載的JS文件的引用,其中第一個始終爲空。

我希望能夠生成一個觸發此錯誤的完整示例,但它似乎與頁面的複雜性有關。該頁面的簡化版本從未觸發此錯誤。

有沒有人知道什麼可能導致這種情況,我該如何解決?網站地址是http://www.husbanken.no/。如果您加載使用yepnope.js資源([「x.js」,「y.js」]

+0

嘿,我知道這是一個古老的問題,但很高興知道這個修復(在github上)是否適合你 - http://stackoverflow.com/a/20039567/2655260 –

回答

0

回調恰好每個資源負載一次, 這意味着它將在負荷N執行一次基本上Modernizr.load更 能力:前綴,超時和更多) ,並提供一個回調,你可以趕上鍵在 關閉並執行這樣的功能:

yepnope([{ 
    load : {'x':'//x.js'}, 
    callback : function(url, result, key){ 
     if("x" === key && result === true) { _pxReg() }; 
    }, 
    complete : function(){ console.log("all done..")} 
}]) 

讓我知道,如果這有助於:)

相關問題