Javascript检查IE8中的本机占位符支持

时间:2011-04-04 08:37:15

标签: javascript placeholder

tldr: 尽管没有对占位符属性的原生支持,为什么(在inputElemnt中'占位符'在IE8中等于true?不是(元素中的属性)检查本机支持的好方法吗? Javascript库Modernizer使用它。

长: 我有一个名为Defaultvalue(http://unwrongest.com/projects/defaultvalue/)的小Jquery插件。我有一个名为Placeholder(https://github.com/janjarfalk/jquery.placeholder.js)的小Jquery插件。它基本上是HTML5占位符属性的后备。

在最近的更新中,我添加了这三行代码。希望如果浏览器本身支持占位符属性,则不会运行Defaultvalue。

if('placeholder' in this){
    // this is an input-element
    return false;
}

除IE8和IE7外,它似乎适用于大多数浏览器。由于某种原因,它在此找到关键的“占位符”,但我认为,IE7 / IE8中没有对占位符属性的任何支持。

我的代码受到Javascript库Modernizer(http://www.modernizr.com/)中此代码的启发。

(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(' '));

我错过了什么?

2 个答案:

答案 0 :(得分:14)

创建一个新的原始输入元素解决了我的问题。

var nativePlaceholderSupport = (function() {
    var i = document.createElement('input');
    return i.placeholder !== undefined;
})();

if(nativePlaceholderSupport){
    return false;
}
<德尔>
var nativePlaceholderSupport = (function(){
    var i = document.createElement('input');
    return ('placeholder' in i);
})();

if(nativePlaceholderSupport){
    return false;
}

感谢RobG,你带我去了。

答案 1 :(得分:1)

没有。它在IE9和IE8中都等于false。

现场演示:http://jsfiddle.net/JVSgx/