Javascript 如何将新函数绑定到元素的onclick事件,并使其在所有其他绑定函数之前运行

Javascript 如何将新函数绑定到元素的onclick事件,并使其在所有其他绑定函数之前运行,javascript,javascript-events,Javascript,Javascript Events,我们希望使用浏览器扩展向现有页面添加功能。假设一个元素已经有绑定到其onclick事件的函数。我正在将一个新函数绑定到该元素的onclick。我想让我的函数在之前绑定到该事件的所有其他函数之前运行。我不希望它们在我的函数完成运行之前开始执行 我想知道如何在JavaScript中以这种方式绑定新函数。你真的不能。事件监听器通常按照它们附加到元素的顺序执行,您也可以这样做。如果您的插件在任何其他侦听器添加代码之前不会执行,那么您唯一的机会就是尽早进入事件分派过程 我能想到的最好的方法是在dom的最高

我们希望使用浏览器扩展向现有页面添加功能。假设一个元素已经有绑定到其onclick事件的函数。我正在将一个新函数绑定到该元素的onclick。我想让我的函数在之前绑定到该事件的所有其他函数之前运行。我不希望它们在我的函数完成运行之前开始执行


我想知道如何在JavaScript中以这种方式绑定新函数。

你真的不能。事件监听器通常按照它们附加到元素的顺序执行,您也可以这样做。如果您的插件在任何其他侦听器添加代码之前不会执行,那么您唯一的机会就是尽早进入事件分派过程

我能想到的最好的方法是在dom的最高点上:

document.documentElement.addEventListener("click", function(e) {
    if (e.target == theElementInQuestion) // or check for e.target.id...
        // do something with the event like
        e.stopImmediatePropagation();
}, true /* sic! */);

事件是通过addEventListener绑定的,还是通过回调直接伪装绑定的?onclick=…一个简单的方法是让你的鼠标在按下时运行,因为click是在MouseUp上运行的。它们与addEventListener绑定。鼠标按下的问题是我希望其他函数在我的函数完成后启动,这可能需要一些时间。@jimmy我根本没有测试过,但我认为它可能会起作用。Try:element.onclick=function{doYourAction;element.onclick;}请告诉我这是否有效:-另外,如果您的操作涉及ajax/任何异步操作,则需要将element.onclick放在它的回调中,以便它首先完成。