2012-04-08 6 views
0

Я использую метод Modernizr.load(), чтобы проверить, понимает ли браузер (т. Е.) Медиа-запросы или нет, и если я не загружаю lib.ответ.loading response.js async через modernizr.load работает медленно?

Однако, я вижу, что загрузка response.js с помощью метода modernizr.load дает мне 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. Преимущество метода async заключается в том, что он не блокирует. Я бы переключил его так, чтобы ответ был первым, так что вам не нужно ждать обработки jQuery. Это, вероятно, решило бы FOUC. Вызов Modernizr.load в вашем <head> (see here), как это:

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 условный является отличным решением слишком вероятно, лучше. Если вы это сделаете, просто поставьте его перед 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

 Смежные вопросы

  • Нет связанных вопросов^_^