Javascript 检查 IE8 中的 native 占位符支持

标签 javascript placeholder

长话短说: 为什么在 IE8 中 ('placeholder' in inputElemnt) 等于 true 尽管不支持 placeholder 属性? (元素中的属性)不是检查 native 支持的好方法吗? Javascript 库 Modernizer 使用它。

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

在最近的更新中,我添加了这三行代码。希望如果浏览器对占位符属性具有 native 支持,则 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(' '));

我错过了什么?

最佳答案

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

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,是你引导我实现的。

关于Javascript 检查 IE8 中的 native 占位符支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5536236/

相关文章:

javascript - 如何用自定义参数替换字符串参数?

javascript - 使用 Javascript 连接多维数组中的字符串元素

javascript - 在 React Modal 中插入 ID

jsp - JSP页面内textarea的占位符

javascript - 在 Socket.IO 中的 ('connection' 上)一直被触发。怎么修?

javascript - 如何使用 Google Maps API 动态填充 heatMapData 数组并加载热图图层?

zend-framework - Zend 框架 : what is the difference between partials and placeholders

ios - UITextField 在 iOS 中将占位符颜色设置为深色

javascript - 如何删除焦点上的占位符

html - 占位符文本未出现在文本区域中