2011-06-24 43 views
4

剛開始一個新的HTML5項目,並使用modernizr.js裝載jQuery的

我注意到Modernizr的文檔頁面上說,你可以使用以下命令:

Modernizr.load([ 
    { 
    load: '//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js', 
    complete: function() { 
     if (!window.jQuery) { 
      Modernizr.load('js/libs/jquery-1.6.1.min.js'); 
     } 
    } 
    } 
]); 

所以在我的HTML我有這個:

<script src="scripts/modernizr-2.0.6.js"></script> 
<script> 
Modernizr.load([ 
    { 
     load: 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js', 
     complete: function() { 
      if (!window.jQuery) { 
         Modernizr.load('scripts/jquery-1.6.1.min.js'); 
      } 
     } 
    } 
]); 
</script> 

但看着螢火蟲,沒有jquery被加載。

我在這裏錯過了一些明顯的東西嗎?

乾杯, 阿迪

+0

您應該避免這種情況,你正在殺死並行腳本下載並使頁面加載速度變慢(當jq開始應用它的樣式時會有明顯的閃爍)。 – Blindy

+0

在網站上,它說'Modernizr.load不會減慢任何速度,並且有時可以通過異步並行地加載腳本來提高性能。'? – Adi

+0

你如何看待,瀏覽器開始加載它在''標籤中看到的所有內容,並且在modernizr完成下載並執行腳本*之前,腳本將不會存在*。 – Blindy

回答

8

Modernizr的是一個小lib和它被加載並迅速執行,是的,它會並行加載腳本,使用它那麼好主意。關於您的錯誤,請從網址中刪除https:並按照示例進行嘗試。

+5

嗨ToyDaVirus。原來問題是開發版本不使用加載器。在評論的頂部是* Modernizr有一個名爲Modernizr.load()的可選(不包括)條件資源加載器,基於Yepnope.js(yepnopejs.com)。要獲得包含Modernizr.load()的構建,以及選擇包含哪些測試,請訪問www.modernizr.com/download/'因此,從那裏下載並且一切正常:) – Adi

+1

@Adi,你應該寫一個答案並接受它。 –

+0

哦!涼。所以沒有建立你的自定義版本並下載。無論如何,要走的路! –

0

把下面的代碼之前

Modernizr.load([ 
       { 
        test: Modernizr.mq('(min-device-width: 320px) and (max-device-width: 728px)'), 
        yep : ['mob.css', 'jquery.mobile-1.1.0.css', 'jquery.mobile-1.1.0.js'], 
        nope : 'pc.css' 
       } 
      ]); 

這種方式,您可以加載多個文件,如CSS,JS

1

因爲我有同樣的問題,阿迪的工作了這裏之所以Modernizer.load將不適用於某些人:

嗨ToyDaVirus。原來問題是開發版本不使用加載器。在評論的頂部是* Modernizr有一個名爲Modernizr.load()的可選(不包括)條件資源加載器,基於Yepnope.js(yepnopejs.com)。要獲得包含Modernizr.load()的構建,以及選擇包含哪些測試,請訪問www.modernizr.com/download/'所以只需從那裏下載,一切都很好:)