在Modernizr v3之前,我使用的是yepnope.js
Modernizr.load和yepnope.js都被弃用了。我们现在如何有条件地调用样式表或javascript文件?
使用Modernizr v2.5.3的示例:
Modernizr.load({
test: Modernizr['object-fit'],
nope: ['./dist/scripts/object-fit.js'],
complete: function(){
if (!Modernizr['object-fit']) {
jQuery(".poster img").imageScale({
scale: "best-fill",
rescaleOnResize: true
});
}
}
});
答案 0 :(得分:4)
有a new syntax,功能名称全都是小写的。您可以将其与jQuery's getScript method结合使用。
看起来像这样:
if (Modernizr.objectfit){
jQuery.getScript("./dist/scripts/object-fit.js")
//it worked! do something!
.done(function(){
console.log('js loaded');
})
//it didn't work! do something!
.fail(function(){
console.log('js not loaded');
});
} else {
jQuery(".poster img").imageScale({
scale: "best-fill",
rescaleOnResize: true
});
}
答案 1 :(得分:0)
在这里查看脚本:https://stackoverflow.com/a/7719185 - 不需要jQuery。 (请注意,答案中有一个较短的Promise示例;请不要在第一个示例之后停止阅读(就像我一样)。)
这里是CSS:loadCSS
:https://github.com/filamentgroup/loadCSS/blob/master/src/loadCSS.js
- 这在某种程度上甚至比YepNope.js更好,如果除了加载东西+回调之外你不需要它的任何功能。因为上面链接的东西比yepnope.js更小(更小min.js.gz
)。
(并且可以与他的回答中显示的Modernizr
mhk
结合使用。)