Javascript attachEvent vs addEventListener vs none

Javascript attachEvent vs addEventListener vs none,javascript,javascript-events,Javascript,Javascript Events,这三个选项中哪一个应该保留/删除? 事实上,有人用所有不同的事件名称变体将表添加到书签中,或者我应该创建一个吗 这三种方法都是一样的 其中,这种方法通常称为DOM0方法,它早于任何实际标准: window.top.mousemove=listenjustone 这种方法可行,但有几个主要缺点: 您无法轻松地堆叠它们--具有多个侦听器 不能从堆栈中删除单个侦听器 旧浏览器中的垃圾收集错误 attachEvent是微软的方法——我相信它也早于任何标准。多年来,它一直是将事件附加到IE上的最佳方

这三个选项中哪一个应该保留/删除?


事实上,有人用所有不同的事件名称变体将表添加到书签中,或者我应该创建一个吗

这三种方法都是一样的

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

window.top.mousemove=listenjustone

这种方法可行,但有几个主要缺点:

  • 您无法轻松地堆叠它们--具有多个侦听器
  • 不能从堆栈中删除单个侦听器
  • 旧浏览器中的垃圾收集错误
attachEvent
是微软的方法——我相信它也早于任何标准。多年来,它一直是将事件附加到IE上的最佳方式,但现代发展不再需要它

addEventListener
是附加事件的最佳方式,现在完全支持。现代编程应该总是使用这个


通常使用
attachEvent
时,使用包装器在
attachEvent
addEventListener
之间进行选择是正常的,这取决于可用的包装器。这些包装中的一些甚至可以正确地保留
这个
值,而
attacheEvent
通常会丢失这个值,底部的一个和顶部的一个
remove/addEventListener
可供所有主流浏览器使用,在普通JavaScript中,它们是最受欢迎的事件处理方式。您想做什么?另外,.Primary opinion-based?谢谢Jonathan!MDN列表不包括onmousemove,尽管我认为它也可以作为html属性使用。-那么,(如果这3行需要尽可能相似,那么)这3个事件名称需要是什么?(如果不是在mousemove、mousemove、mousemove上)请注意,
attachEvent
除了IE之外不存在于任何地方,因此在使用它之前必须检查该方法是否存在。我在*上添加了另一个原因
可能不好,尤其是在旧的IE中,JS和DOM垃圾收集彼此不知道,内存泄漏很容易。IE8是正式的EOL,所以只要使用
addEventListener
,除非你是为了迎合旧的、未打补丁的浏览器。谢谢,@AlexanderO'Mara——我已经忘记了这一点。
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 );