我正在尝试为我的网站编写一个简单的占位符jQuery插件,但当然我只想在不支持本机占位符属性的情况下触发该函数...
如何使用jQuery测试占位符属性的原生支持?
答案 0 :(得分:93)
您可以通过在您编写的Javascript顶部插入此内容轻松添加到$.support
:
jQuery.support.placeholder = (function(){
var i = document.createElement('input');
return 'placeholder' in i;
})();
然后,您可以在代码中的任何位置使用$.support.placeholder
或jQuery.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.
}