【问题标题】:is there any way to detect html feature availability in the browser有什么方法可以检测浏览器中的 html 功能可用性
【发布时间】:2012-05-10 10:13:11
【问题描述】:

是否有任何方法可以在 javascript 中检测,如果以下 html5 或 css 3 功能在浏览器上可用。

例如,我有一个属性:占位符,

<input type="text" placeholder="type your email address" />

我设置了一个javascript函数,如果浏览器不支持占位符属性,它将设置一个手动占位符


如果我使用 Modernizr,会这样做吗:

if ( Modernizr.testProp('placeholder') )
// add attribute placeholder
else
// assign a keypress event as placefolder

【问题讨论】:

    标签: css html modernizr


    【解决方案1】:

    在这样一个简单的情况下,你可以直接做事而不涉及 Modernizr:

    <input type="text" placeholder="type your email address" 
      id="email">
    <script>    
    var email = document.getElementById('email');
    if(!('placeholder' in email)) {
      email.value = email.getAttribute('placeholder');
      email.onfocus = function () { this.value = ''; };
    }
    </script>
    

    在这种方法中,placeholder 属性出现在静态 HTML 标记中。不支持时没有害处;事实上,它甚至在不受支持时也很有用。

    关键是当支持placeholder 时,元素节点存在具有该名称的属性。即使在不支持的情况下,浏览器也已经解析并存储了它,这样你就可以用getAttribute()获取它,并将值赋给value属性,使其显示为初始内容。

    代码在获得焦点时清除该字段。这听起来比每次点击时都清除要好,因为用户在输入部分数据后可能会出于多种原因点击该字段。

    附:为了可用性、可访问性和简单性,最好为每个输入字段使用可见标签,而不是使用占位符。所以这不是一个好的用例。但是可以使用相同的技术,例如对于网站通常作为站点范围导航系统的一部分的非常简单的搜索表单;在那里,将表单压缩到非常小的尺寸,省略标签是有意义的。

    【讨论】:

    • 1+ 这是测试您的问题的更好方法,然后现代化器 (IF) 您还没有将它用于其他事情。更少的外部文件和更快的网站
    • 感谢您的建议,但占位符只是一个示例,我正在使用此链接跟踪它,[link]miketaylr.com/code/input-type-attr.html,无论如何,我想您是对的,我可以在任何地方使用这些条件
    【解决方案2】:

    使用Modernizr 满足您的所有功能检测需求

    【讨论】:

    • 我知道,我必须在现代化器中使用什么,这是我需要知道的,我已经更新了我的问题
    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 2013-05-05
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    相关资源
    最近更新 更多