.addEventListener 和 .attachEvent 正确用法

.addEventListener and .attachEvent correct usage

本文关键字:用法 attachEvent addEventListener      更新时间:2023-09-26

我有一个计算简单的表单,我有一个侦听提交事件的.addEventListener。这很好用,直到我发现IE7和IE8不支持此功能,而是使用自己的.attachEvent,我也需要它在这两个浏览器中工作。

你可以在这里看到小提琴 http://jsfiddle.net/hbrovell/AGBnj/

我找到了很多解决方案,您可以在其中检查浏览器是否使用.addEventListener.attachEvent但我无法理解如何使用它。

例如,我将如何正确地实现这段代码来挖掘?

function addEvent(element, eventName, callback) {
if (element.addEventListener) {
    element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
    element.attachEvent("on" + eventName, callback);
}}
这段代码中的元素

,是我代码中的表单元素吗?事件名称是提交事件吗?

我无法在这个项目中使用任何库,所以我需要使用普通的javascript。

希望有人能给我一些关于如何做到这一点的指导。

var el = document.getElementById("my-el"),
    action = function (e) { doStuff(); },
    eventName = "click";

// normal browsers
el.addEventListener(eventName, action);
// IE < 9
el.attachEvent("on" + eventName, action);

知道了这一点,你应该能够看到addEvent在做什么。

有一个非常大的,但在那里。
IE给你的回报是非常不同的。
虽然其他浏览器为您提供e事件参数,但 IE 不会。
虽然其他浏览器this单击/键入的元素等,但IE不会。

addEvent对此没有任何作用。
如果您只需要知道事件发生,那 100% 没问题。
如果您需要preventDefaultstopPropagation,或者您需要获取事件信息,那么该函数将不足以处理它。