【发布时间】:2011-07-29 00:26:51
【问题描述】:
tldr: 为什么 ('placeholder' in inputElemnt) 在 IE8 中等于 true,尽管不支持 placeholder 属性? (元素中的属性)不是检查本机支持的好方法吗? Javascript 库 Modernizer 使用它。
长:
我有一个名为 Defaultvalue (http://unwrongest.com/projects/defaultvalue/) 的小型 Jquery 插件。我有一个名为 Placeholder (https://github.com/janjarfalk/jquery.placeholder.js) 的小型 Jquery 插件。它基本上是 HTML5 占位符属性的后备。
在最近的更新中,我添加了这三行代码。如果浏览器对占位符属性具有原生支持,希望 Defaultvalue 不会运行。
if('占位符'在这个){ // 这是一个输入元素 返回假; }它似乎可以在除 IE8 和 IE7 之外的大多数浏览器中使用。出于某种原因,它在其中找到了关键的“占位符”,但我认为,在 IE7/IE8 中没有对占位符属性的任何支持。
我的代码受到 Javascript 库 Modernizer (http://www.modernizr.com/) 中的这段代码的启发。
(功能(道具){ for (var i = 0, len = props.length; i我错过了什么?
【问题讨论】:
-
IE 对属性和属性一无所知,它认为它们是同一件事(就像 jQuery 一样)。非标准属性被添加为“expando”属性。使用 for..in 来迭代宿主对象的属性不是一个好主意。 IE
-
谢谢!您的评论带来了一个可行的解决方案。
-
IE9中也没有实现占位符属性...