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(' '));
我错过了什么?
答案 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。