0

如果我在一个元素上添加了一个虚构的属性,那么element.madeUpAttribute应该返回 false。(在现代浏览器中确实如此。)

然而在 IE8- 它返回属性值,就像:element.getAttribute('madeUpAttribute').

仅当浏览器支持该属性时,有什么方法可以使其返回属性值?

多谢你们!

[更新]

这是一个演示:http: //jsfiddle.net/Daniel_Hug/rWz2n/

这是它在 IE8 中的样子:

http://f.cl.ly/items/0d1t3l2E1n1a3j0l1W2j/IE8.png

4

1 回答 1

2

检查是否支持某些功能'madeUpAttribute' in element在几种情况下对我来说是诀窍。

实际上,您可以尝试检查元素的原型。

旧版 IE 中没有 DOM 对象的原型,但有一个有趣的古老特性

if (element.prototype) {
  return 'madeUpAttribute' in element.prototype
} else {
  document.expando = false;
  var hasProp = true;
  try {
    element.madeUpAttribute = element.madeUpAttribute;
  } catch(e) {
    hasProp = false;
  }
  document.expando = true;
  return hasProp;
}

不过,这将适用于第一个任务。设置属性后,认为它确实存在。

于 2012-04-15T23:22:42.223 回答