如何测试浏览器是否支持本机占位符属性?

时间:2010-10-14 21:41:19

标签: jquery html5 testing placeholder

我正在尝试为我的网站编写一个简单的占位符jQuery插件,但当然我只想在不支持本机占位符属性的情况下触发该函数...

如何使用jQuery测试占位符属性的原生支持?

4 个答案:

答案 0 :(得分:93)

您可以通过在您编写的Javascript顶部插入此内容轻松添加到$.support

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

然后,您可以在代码中的任何位置使用$.support.placeholderjQuery.support.placeholder

注意:此代码改编自diveintohtml5,上面是hellvinz提供的链接。

答案 1 :(得分:15)

使用Modernizr库,您可以在此处找到它:http://www.modernizr.com/

然后这样做:

if (Modernizr.input.placeholder) {
  // your placeholder text should already be visible!
} else {
  // no placeholder support :(
  // fall back to a scripted solution
}

Modernizr非常便于测试浏览器对几乎所有HTML5功能的支持。

答案 2 :(得分:4)

我喜欢这么简单的课......

var Browser = {
  Can: {
    Placeholder: function () {
      return 'placeholder' in document.createElement('input'); 
    }
  }
}

...因此您可以轻松检查浏览器是否支持占位符属性。

if (Browser.Can.Placeholder()) {

}

答案 3 :(得分:3)

无论是否在HTML INPUT元素上定义了占位符属性,所有浏览器中的INPUT DOM对象都存在placeholder属性。

正确的方法是:

var Modernizr = {};
// Create the input element for various Web Forms feature tests.
var inputElem = document.createElement('input'), attrs = {};    
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(' '));

if(!Modernizr.input.placeholder) {
    // Do something.
}