getAttribute() 在 IE 11 中无法与 Sizzle 一起使用

getAttribute() not working with Sizzle in IE 11

我有一些 Javascript 代码可以在所有其他浏览器上正常工作,但(当然)IE。有人可以告诉我我的代码是否有问题,如果没有,建议修复?

注意: IE returns null for href 属性。

for(var a=Sizzle("*"),i=0;i<a.length;i++) {
  a[i].onclick=function(){
    window.open(this.getAttribute("href"),"_self");
  }
}

尝试仅选择实际具有 href 属性.

的元素

类似于:

for(var a=Sizzle("[href]"), i=0; i<a.length;i++) { ... }

问题的最初原因可能是事件顺序的处理方式。有关一些背景信息,请参阅 here。您不仅向实际具有 href 属性的链接添加了事件处理程序,还向其所有父级添加了事件处理程序。

无论哪种方式,使用 * 选择器而不是更具体的选择器的情况都不多。通常,您应该尽可能使用最具体的选择器。