在返回之前检查outerHTML以验证属性是否存在

时间:2012-03-27 13:15:49

标签: javascript internet-explorer

我刚刚在一个框架中看到了这个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来映射特定属性,例如传统上狡猾的htmltextstyle等特定属性,可以考虑安全的可能性如此守护它? expando属性,我猜......

在任何情况下,IE6 / 7/8可能会返回除DOM元素属性以外的任何内容吗?

另外,为什么他们会选择不过滤element.attributes集合而不会更快 - 或者它是否被认为不够可靠(请记住所有标准的getter都已经满足了)?

0 个答案:

没有答案