在IE8中,尽管没有本地支持placeholder属性,为什么('placeholder' in inputElemnt)等于true?(attribute in element)不是检查本地支持的好方法吗?JavaScript库Modernizer使用它。
我有一个名叫Defaultvalue (http://unwrongest.com/projects/defaultvalue/)的小型Jquery插件。 我有一个名为Placeholder(https://github.com/janjarfalk/jquery.placeholder.js)的小型Jquery插件。它基本上是HTML5 placeholder属性的后备。
最近更新时,我添加了以下三行代码。希望如果浏览器具有对占位符属性的本机支持,则Defaultvalue将不会运行。
if ('placeholder' in this) { //这是一个输入元素 return false; }
除了IE8和IE7之外,它似乎在大多数浏览器中都有效。由于某种原因,它在this中找到了“placeholder”键,但我认为IE7 / IE8中没有对placeholder属性的支持。
我的代码受到JavaScript库Modernizer(http://www.modernizr.com/)中此代码的启发。
(function(props) { // 循环遍历属性数组,判断是否在input元素中存在 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(' '));
我漏掉了什么?