我不断跳进Modernizr位于头部的项目,但它没有被使用(至少对于特征检测)。现在,我喜欢Modernizr,我经常使用它进行特征检测,并对需要它的项目进行回退;然而,我进入它的最后三个项目一直没有调用任何特征检测类。这些项目正在使用vanilla javascript 和/或根本不需要jQuery polyfill。 1 这就是说...如果你没有使用特征检测并且真的不需要加载一个jQuery库 2 ,除了添加HTTP请求和要加载的资源之外,Modernizr真的做了什么吗?
我对jQuery / javascript不够强大,无法理解它是否会影响其他任何内容。
修改
1 & 2 - Modernizr是javascript,不需要jQuery库(这让我想知道为什么还要加载jQuery库,至少在这些情况下)。
只有#-shiv-cssclasses-load
的Modernizr.min 为7.57 KB,而 html5shiv.min 仅为3 KB。
答案 0 :(得分:33)
一般来说,Modernizr做了三件事。
如果您不使用任何这些功能,那么根本不包括Modernizr。如果你只将它用于html5shiv,那么你可能只需要包含它来保存几个字节,尽管我怀疑它有相关的大小差异。
也就是说,您不应该在不使用的modernizr构建中包含功能检测。这只不过是浪费。
答案 1 :(得分:12)
Modernizr还包括垫片,可以帮助您自己定义或包含其他库。
Modernizr的主要目标是通过类使用检测。所以你可以这样做:
示例,您希望根据客户端是否支持Flash更改行为:
.flash #flashdiv
{
display:block;
}
.no-flash #flashdiv
{
display:none;
}
它确实可以帮助您动态处理不同客户端浏览器的功能。
此外,您可以使用Modernizr检测HTML5功能并提供后备(polyfill)。
例如:
<script>
if (Modernizr.canvas) {
alert("This browser supports HTML5 canvas!"); //you can load js here. or use yepnope)
}
</script>