当我出于某种原因无法访问 JQuery 时,我通常使用element.hasAttribute
or手动执行属性选择element.getAttribute
。
但是,这里似乎有些复杂,因为较旧的浏览器(IE <= 8)不支持hasAttribute
. 所以如果要检查一个元素是否具有某个属性,就需要使用getAttribute
并检查返回值。
if ((element.hasAttribute && element.hasAttribute("foo"))
|| (element.getAttribute("foo") != null))
{
....
}
这让我觉得你不妨完全忘记使用hasAttribute
,而总是使用getAttribute
. 问题是我找不到关于. getAttribute
实际上,null
如果该属性不存在,它会在大多数浏览器上返回 - 但它也可能返回空字符串,因为根据 DOM 3 规范它应该这样做。
不幸的是,返回一个空字符串让我们无法区分:
<div data-my-attribute = ""></div>
和
<div></div>
因此,在实践中 - 似乎最便携的事情是首先检查浏览器是否支持hasAttribute
,如果不支持,则使用getAttribute
- 因为 IE 6-8 实现getAttribute
了如果属性不支持则返回null
(而不是空字符串)存在。
这真的是最好的方法吗?或者有没有更好的方法来用纯 Javascript 编写跨浏览器属性检测?