首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过modernizr.load异步加载respond.js很慢?

通过modernizr.load异步加载respond.js很慢?
EN

Stack Overflow用户
提问于 2012-04-08 23:44:25
回答 1查看 2.6K关注 0票数 0

我使用Modernizr.load()方法来测试浏览器(即)是否能理解媒体查询,如果不能,我就加载respond.js库。

但是,我看到通过modernizr.load方法加载respond.js会得到一个FOUC,而内联脚本方法不会。

modernizr.load方法:

代码语言:javascript
复制
<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>

内联方法:

代码语言:javascript
复制
<!--[if lte IE 8]>
  <script src="js/plugins/respond.js?v=v1.1"></script>
<![endif]-->

为什么会这样呢?异步方法不是应该更快吗?或者是内联方法更好,因为脚本阻塞了DOM并等待脚本加载...?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-21 03:05:12

这取决于您对FOUC的关心程度。异步方法的优点是它是非阻塞的。我会改变它,使Respond优先,这样您就不必等待解析jQuery。这可能会解决FOUC问题。在<head> (see here)中调用Modernizr.load,如下所示:

代码语言:javascript
复制
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 conditional也是一个很好的解决方案--可以说是更好。如果你这样做了,那么只需要把它放在jQuery之前,你就没问题了:

代码语言:javascript
复制
<!--[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');
    }
}]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10064079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档