【问题标题】:Modernizr just for one quick check?Modernizr 只是为了快速检查?
【发布时间】:2011-12-22 01:07:10
【问题描述】:

我想检查运行我页面的浏览器是否 能够处理'html 5占位符'

我知道我可以添加以下 javascript 检查:

!Modernizr.input.placeholder

但是为了一次检查而导入一个库是否值得?

modernizr 如何为我做到这一点(我的意思是它是如何在幕后实现的)?

【问题讨论】:

    标签: javascript html placeholder modernizr


    【解决方案1】:

    如果您想检查placeholder 支持,那么您需要做的就是;

    var placeholderSupport = "placeholder" in document.createElement("input");
    

    并回答您的其他问题; ,包含 1 行 JS 的整个 Modernizr 库绝对没有意义(Modernizr 是 1000 多行......看图 :))*

    *是的,没有缩小,但概念仍然存在

    【讨论】:

    • 澄清一点,Modernizr 提供了用于研究和开发目的的未压缩源。 Modernizr 不提供包含所有内容的缩小版本。我们鼓励您创建自定义构建。因此,这不是单线与 1000+ 线的比较。
    • 此外,Modernizr 是边缘案例的存储库。例如,对 input type=range 的测试支持充满了危险。每次都发明自定义测试是一种很好的方式来结束像 UA 嗅探一样脆弱的东西。人们以前使用 HTML5 表单输入测试来完成它,但他们所有“如此简单”的检测现在都被破坏了。免责声明:很明显,我写的是 Modernizr。 :p
    • 公平地说,gzip 后它有 87 到 500 字节的差异 :)
    【解决方案2】:

    例如,您只需选择“输入属性”即可从modernizr 中获取所需的内容并生成构建

    http://www.modernizr.com/download/

    【讨论】:

      【解决方案3】:

      It's open-source. Go read it.

      Modernizr['input'] = (function( props ) {
        for ( var i = 0, len = props.length; i < len; i++ ) {
          attrs[ props[i] ] = !!(props[i] in inputElem);
        }
        return attrs;
      })(('autocomplete autofocus list placeholder max min ' +
          'multiple pattern required step').split(' '));
      

      【讨论】:

      • 诚然,对于不熟悉该技巧的人来说,该来源很难理解。
      • 如果你以前没有见过!! 成语,你可能会摸不着头脑,但很容易理解它的要点,即modernizr 只是检查属性是否存在并且没有别的了。
      • @mquander 源代码有点超出我的理解。为什么两个感叹号???
      • @lorenzo:这是一种将 Javascript 值强制为真或假的简洁方法。例如,如果props[i]42,那么!props[i]false,所以!!props[i]true
      • @Matt:我实际上不知道——如果你在五分钟前问我,我会猜到in 总是返回一个布尔值(但我只为两个人编写了 Javascript个月。)假设:也许这是在某些旧浏览器从in返回其他值之后进行清理的一种方式?
      【解决方案4】:

      找到这个:http://davidwalsh.name/html5-placeholder

      代码:

      function hasPlaceholderSupport() {
        var input = document.createElement('input');
        return ('placeholder' in input);
      }
      

      还有一个备用解决方案,点击链接

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 1970-01-01
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多