我刚刚在一个框架中看到了这个hack,它基本上阻止了对IE中的element.getAttribute
的直接访问< 9 ,它检查所请求的attr是否存在于元素的outerHTML
上,如果是,则允许getter,否则返回null。
var outer = this.outerHTML;
// segment by the opening tag and find mention of attribute name
if (outer.substr(0, outer.search(/\/?['"]?>(?![^<]*<['"])/)).indexOf(name) < 0) return null;
... ADD TO WHITELIST AND CONTINUE..
鉴于已经定义了大量自定义getter来映射特定属性,例如传统上狡猾的html
,text
,style
等特定属性,可以考虑安全的可能性如此守护它? expando属性,我猜......
在任何情况下,IE6 / 7/8可能会返回除DOM元素属性以外的任何内容吗?
另外,为什么他们会选择不过滤element.attributes
集合而不会更快 - 或者它是否被认为不够可靠(请记住所有标准的getter都已经满足了)?