2012-04-08 8 views
0

私はModernizr.load()メソッドを使用してブラウザがメディアクエリーを理解するかどうかをテストし、そうでなければrespond.jsライブラリを読み込みます。loading respond.js modernizr.load経由の非同期は遅いですか?

しかし、私はmodernizr.loadメソッド経由でrespond.jsを読み込むと、インラインスクリプトメソッドではないFOUCが得られることがわかります。

modernizr.load方法:

<script> 
    Modernizr.load([{ 
    load: 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', 
    complete: function() { 
     if (!window.jQuery) { 
     yepnope('js/libs/jquery.js?v=1.7.2'); 
     } 
    } 
    }, 
    { 
    test: Modernizr.mq('only all'), 
    nope: 'js/plugins/respond.js?v=v1.1' 
    }]) 
</script> 

インライン方式:

<!--[if lte IE 8]> 
    <script src="js/plugins/respond.js?v=v1.1"></script> 
<![endif]--> 

なぜ、そうですか?非同期メソッドは高速ではいけませんか?スクリプトがDOMをブロックしてスクリプトがロードされるまで待っているため、インラインメソッドが優れていますか?

答えて

1

FOUCを気にするかどうかによって異なります。非同期メソッドの利点は、非ブロッキングであることです。応答を最初にして、jQueryが解析されるのを待つ必要がないように、これを切り替えます。それはおそらくFOUCを解決するだろう。

Modernizr.load([{ 
    test: Modernizr.mq('only all'), 
    nope: 'js/plugins/respond.js?v=v1.1' 
    },{ 
    load: 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', 
    complete: function() { 
     window.jQuery || Modernizr.load('js/libs/jquery.js?v=1.7.2'); 
    } 
}]); 

あなたのIEの条件があまりにも間違いなくより良い優れたソリューションです。このようなあなたの<head>Modernizr.loadsee here)を呼び出します。それを行うと、jQueryの前に置いてください。

<!--[if lt IE 9]> 
    <script src="js/plugins/respond.js?v=v1.1"></script> 
<![endif]--> 

Modernizr.load([{ 
    load: 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', 
    complete: function() { 
     window.jQuery || Modernizr.load('js/libs/jquery.js?v=1.7.2'); 
    } 
}]); 
+0

ありがとうございます! –

+0

@MartinBroder確かに男! =] – ryanve

関連する問題