attachEvent vs addEventListener vs none

时间:2016-04-26 16:27:45

标签: javascript javascript-events

var listenjustonce function(callback){ 
window.top.removeEventListener("mousemove",listenjustonce );}

window.top.attachEvent("mousemove", listenjustonce ); //or OnMouseMove?:D
window.top.mousemove = listenjustonce;
window.top.addEventListener("mousemove",listenjustonce );  

应该保留/删除3中的哪一个? http://caniuse.com/#search=addEventListener

实际上,任何人都会在桌面上添加所有不同的事件名称变体,或者我应该制作一个?

1 个答案:

答案 0 :(得分:1)

所有三种类型都做同样的事情

其中,此方法通常称为DOM0方法,它早于任何实际标准:

window.top.mousemove = listenjustonce;

此方法有效,但有几个主要缺点:

  • 你不能轻易堆叠他们 - 有多个听众
  • 您无法从堆栈中删除单个侦听器。
  • 旧浏览器中的垃圾收集错误。

attachEvent是微软的方法 - 我相信它也早于任何标准。多年来,这是将事件附加到IE上的最佳方式,但现代开发中不再需要它。

addEventListener是附加活动的最佳方式,现在已得到全面支持。现代编程应该始终使用它。

通常使用attachEvent时,使用包装器在attachEventaddEventListener之间进行选择是正常的,具体取决于哪一个可用。其中一些包装器甚至可以正确保留this值,attachEvent通常会丢失该值。