2012-04-08 13 views
0

Ich verwende die Modernizr.load() - Methode, um zu testen, ob der Browser Medienabfragen versteht oder nicht, und wenn nicht, lade ich die Bibliothek repand.js.lädt respond.js async über modernizr.load ist langsam?

jedoch sehe ich, dass das Laden der reply.js über die modernizr.load-Methode ruft mir einen FOUC, wo die Inline-Skript-Methode nicht.

modernizr.load Methode:

<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> 

Inline-Methode:

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

warum ist das so? sollte die Async-Methode nicht schneller sein? Oder ist die Inline-Methode besser, weil das Skript das DOM blockiert und wartet, bis das Skript geladen ist ...?

Antwort

1

Es hängt davon ab, wie viel Sie über die FOUC kümmern. Der Vorteil der asynchronen Methode besteht darin, dass sie nicht blockiert. Ich würde es umdrehen, so dass Respond zuerst ist, so dass Sie nicht auf die Analyse von jQuery warten müssen. Das würde wahrscheinlich den FOUC lösen. Rufen Sie Modernizr.load in Ihrem <head> (see here) wie folgt aus:

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'); 
    } 
}]); 

Ihre IE bedingt ist große Lösung allzu wohl besser. Wenn Sie das tun, dann legen Sie es vor jQuery und alles wird gut:

<!--[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

Vielen Dank für Ihre Hilfe! –

+0

@MartinBroder Sicheres Ding Mann! =] – ryanve

Verwandte Themen