Javascript 如果你';你不使用特征检测吗?

Javascript 如果你';你不使用特征检测吗?,javascript,jquery,modernizr,Javascript,Jquery,Modernizr,我一直跳进Modernizer位于头部的项目,但它没有被使用(至少在特征检测方面)。现在,我喜欢Modernizer,我经常使用它进行功能检测,并在需要它的项目上使用它;然而,我参与的最后三个项目一直处于悬而未决的状态,没有调用任何特征检测类。这些项目使用的是香草javascript和/或根本不需要jQueryPolyFills。1尽管如此。。。如果您不使用特性检测,并且确实不需要加载jQuery库2,那么Modernizer除了发出额外的HTTP请求和加载资源之外,还真的在做什么 我对jQue

我一直跳进Modernizer位于头部的项目,但它没有被使用(至少在特征检测方面)。现在,我喜欢Modernizer,我经常使用它进行功能检测,并在需要它的项目上使用它;然而,我参与的最后三个项目一直处于悬而未决的状态,没有调用任何特征检测类。这些项目使用的是香草javascript和/或根本不需要jQueryPolyFills。1尽管如此。。。如果您不使用特性检测,并且确实不需要加载jQuery库2,那么Modernizer除了发出额外的HTTP请求和加载资源之外,还真的在做什么

我对jQuery/javascript不够了解,无法理解它是否会影响到其他方面


编辑

1&2-Modernizer是javascript,不需要jQuery库(这让我想知道为什么jQuery库也被加载,至少在这些情况下是这样)


只有
#-shiv cssclasses加载的Modernizr.min为7.57 KB,而html5shiv.min仅为3 KB。

Modernizr还包括垫片,可避免您自己定义垫片或包含其他库

Modernizer的主要目标是通过类使用检测。所以你可以这样做:

例如,您希望根据客户端是否支持闪存更改行为:

.flash #flashdiv
{
  display:block;
}   

.no-flash #flashdiv
{
  display:none;
}
它确实可以帮助您动态处理不同客户端浏览器的功能

此外,您还可以使用Modernizer检测HTML5功能并提供回退(polyfills)

例如:


if(现代化画布){
警报(“此浏览器支持HTML5画布!”;//您可以在此处加载js。或使用yepnope)
}

一般来说,现代化有三件事

  • 它添加了指示功能支持的类,允许您根据元素支持的功能对元素应用不同的样式
  • 它允许您运行功能检测以决定是否运行脚本/运行多边形填充
  • 它注入了html5shiv,它允许旧浏览器理解HTML5元素
  • 如果您不使用这些特性中的任何一个,那么包含Modernizer就毫无意义。如果您仅将其用于,那么您可能只需要将其包括在内,以节省一些字节,尽管我怀疑是否存在相关的大小差异


    也就是说,您永远不应该在您不使用的Modernizer构建中包含功能检测。这只不过是浪费。

    它还有一个HTML5Shim用于IEIt,它可能会影响全局变量,但我不知道Modernizer内部的情况,我想他们没有设置任何,但必须有其他人来。。)Modernizer与jQuery有什么关系?我认为在任何方向上都没有关系。好吧,从@Royinamir所说的,他们确实设置了它们…@hgoebl我不确定Modernizr是否需要jQuery库(就像我所说的,不是任何标准的js开发)。这个特性是在Modernizr:SSE Polyfill中添加的。
    <script>
      if (Modernizr.canvas) {
        alert("This browser supports HTML5 canvas!"); //you can load js here. or use yepnope)
      }
    </script>