我有條件地使用Modernizr的加載器(集成的yepnope.js)加載JavaScript代碼。這裏是我的代碼:Modernizr是否加載腳本一次?
Modernizr.load({
test: Modernizr.geolocation,
yep: ['js/get-native-geo-data.js','https://www.google.com/jsapi'],
nope: ['js/get-geo-data-by-ip.js','https://www.google.com/jsapi'],
complete : function() {
google.load("maps", "3",
{other_params: "sensor=false", 'callback':init});
});
它的工作原理,但在這兩種螢火蟲和谷歌開發者工具Network標籤顯示它加載獲得本地-地理data.js兩次。我在native-geo-data.js中添加了一個console.log(),並且只打印一次該消息。那麼是什麼讓FireBug和Dev Tools報告兩個網絡調用都返回200,大小爲3K?
這是螢火蟲如何報告響應頭爲每個GET(它們是相同的):
HTTP/1.1 200 OK
Date: Thu, 20 Dec 2012 19:39:52 GMT
Server: HttpComponents/4.1.3
Content-Length: 3054
Content-Type: application/x-javascript
Connection: keep-alive
運行它雖然查爾斯的監測工具,我看到同樣的結果之後 - 該函數被調用兩次。那麼錯誤在哪裏?在Modernizr中,在yepnope中,還是在我的頭腦中?
感謝您對yepnope文檔的參考。這絕對不是緩存在我的情況。 yepnope文檔並沒有說明如何正確指定緩存策略。我發現的唯一的其他參考是使用預加載,但這正是我不想做的 - 我需要加載其中一個或另一個腳本。我試着用預緊前綴 沒錯:「預加載JS /獲取本地-地理data.js!」,「HTTPS://www.google.com/jsapi」] ,但它並沒有發揮作用。 –
嘗試在HTML文件中使用也沒有幫助。 –
你也可以閱讀這個問題在這裏https://github.com/SlexAxton/yepnope.js/issues/10看起來就像你不能100%依靠在這種情況下Firebug的信息。 –