如何仅在需要时使用RequireJS包含polyfill

时间:2014-03-18 21:25:27

标签: javascript requirejs modernizr

我想仅为不支持媒体查询的浏览器加载Respond.js polyfill。我使用RequireJS来管理我的js文件,使用Modernizr来检测功能支持。

只有当浏览器不支持媒体查询时,让RequireJS加载Respond.js的最佳方法是什么?

我看到了这个答案并且它有效但是有更好的方法吗?当我添加更多的polyfill时,我不得不一遍又一遍地重复这个?:RequireJS: Conditionally Load Polyfill Using Modernizr

我的代码看起来像这样,并且包含在我的主要require语句中:

if (Modernizr.mq('only all')) {
  require(['plugins/respond'], function(){});
}

1 个答案:

答案 0 :(得分:1)

最简单的方法是获取包含Yepnope.js的Modernizr包。然后你可以这样有条件地加载:

Modernizr.load({
    test: Modernizr.mq('only all'),
    yep: '',
    nope: 'plugins/respond.js'
});

不幸的是,是的,您必须为要使用polyfill支持的每个功能执行此操作。 yep属性允许您在功能存在时加载脚本。