【问题标题】:Will IE10 use `addEventListener`, or `attachEvent`?IE10 会使用 `addEventListener` 还是 `attachEvent`?
【发布时间】:2012-10-03 01:24:23
【问题描述】:

到目前为止,它还会像其他人一样邪恶、令人沮丧和古怪吗?他们什么时候才能使用该程序,或者他们会一直这样做吗?就我个人而言,我希望它们不会让人们更快地放弃它们而转向免费软件,这样我就可以使用更短的测试:

var addEventListener = !-[1,] ? "attachEvent" : "addEventListener"; 而不是每次都测试方法本身。还是 IE10 两者都支持?

【问题讨论】:

  • 您的示例代码非常错误。不要使用不相关的特征进行特征检测。

标签: internet-explorer dom dom-events internet-explorer-10 attachevent


【解决方案1】:

IE9 使用addEventListener
IE8 使用了XMLHttpRequest

通过尝试测试“IE 怪癖”然后围绕它进行编程,您将失去实际使用标准功能的能力。
尤其是当您测试的怪癖与您要使用的功能无关时。 一些具有这些怪癖的浏览器是否也不支持一种或另一种标准功能也没关系...
因为其他一些浏览器没有这个怪癖,也没有这个功能......
...或者确实具有该功能但仍然有怪癖。

【讨论】:

  • 谁在乎标准功能是否被使用?我怀疑它的性能更高。那么谁在乎呢,因为我的代码已经被功能检查(我唯一关心的事情)弄得乱七八糟了,什么代码实际上是“执行”的?
  • 而且,实际上,它排列得很好,不是吗?我的意思是,你可以更深入地测试both attachEvent detachEvent。你明白我的意思了吗?
  • 但这就是我的意思... ...如果您要进行测试,检查添加元素的数组长度,作为决定是否使用 XHR 的一种方法,然后你强迫 IE9 使用自 IE6 以来没有为浏览器更新的 AJAX 库。可以肯定地说那里有性能潜力。为什么你的代码乱七八糟?创建一个垫片,并使用它。少数几行将涵盖事件处理和 AJAX,每个测试一次,并尽可能使用最标准/性能最好的版本。
  • 并且使用addEventListener 来测试attachEventdetachEvent 都很好 - 测试看看 [1,] 是一个还是两个数组元素,并使用它来决定使用哪个事件系统和 AJAX 系统是另一个问题。但是检查 addEventListener 然后将window.addEventListener 的值设置为包装attachEvent 的函数,传入正确的this 引用并将e 作为第一个参数传递是一个非常简单的过程,只需要发生一次,永远。
  • 好吧,AJAX 同样简单——XMLHttpRequest vs ActiveXObject msxml2.xmlhttp.3.0。至于攻击事件……不是真的。在 window 对象上查找 .addEventListener。如果它不存在,则切换到创建备份。
猜你喜欢
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多