Javascript 在现有处理程序之前追加我的事件处理程序

Javascript 在现有处理程序之前追加我的事件处理程序,javascript,javascript-events,Javascript,Javascript Events,假设有一个元素具有一些onclick事件处理程序。例如,onclick会发出警报(“OldEventHandler”) 我想在现有事件处理程序之前添加我的事件处理程序。例如,我的事件处理程序函数执行警报(“NewEventHandler”) 所以点击我想看到“NewEventHandler”弹出窗口,然后是“OldEventHandler”弹出窗口 这需要在纯JavaScript中实现请不要jQuery。您可以保存原始处理程序,然后在完成后调用它: var oldHandler = myElem

假设有一个
元素具有一些onclick事件处理程序。例如,onclick会发出
警报(“OldEventHandler”)

我想在现有事件处理程序之前添加我的事件处理程序。例如,我的事件处理程序函数执行
警报(“NewEventHandler”)

所以点击我想看到“NewEventHandler”弹出窗口,然后是“OldEventHandler”弹出窗口


这需要在纯JavaScript中实现请不要jQuery。

您可以保存原始处理程序,然后在完成后调用它:

var oldHandler = myElement.onclick;

myElement.onclick = function() {
    // do your stuff here
    ...

    // then call the original
    oldHandler.apply(this, arguments);
}

解决此问题的另一种方法是创建一个通用事件处理程序,以预定义的顺序存储函数数组。当触发
onclick()
事件时,您可以按该顺序调用所需的函数。

如果将所有处理程序函数都设置为my,则这将起作用。但在本例中,默认事件处理程序是由外来代码(我无权访问)设置的,我不想完全阻止它。我只想在它之前插入我的处理程序。如果将addEventListener处理程序另外添加到onclick(无论如何首先会调用它们)@alex_1948511,这可能取决于使用
addEventListener
添加的处理程序是注册为捕获处理程序还是冒泡处理程序,似乎不起作用。
.onclick
处理程序被视为后者,发生在捕获处理程序之后。