javascript - 将事件添加到队列头部

标签 javascript events

我已经定义了onclick事件。我想添加额外的回调函数,该函数将在已定义的回调之前调用。

  • 如何将事件添加到具体事件类型的队列头部?

最佳答案

如果您对 IE 使用 attachEvent,则无法保证事件触发的顺序。请参阅http://msdn.microsoft.com/en-us/library/ms536343(VS.85).aspx

If you attach multiple functions to the same event on the same object, the functions are called in random order, immediately after the object's event handler is called.

(我实际上已经看到事件是按相反顺序调用的,而不是随机的)。不管怎样,库通常倾向于深入使用 attachEvent,所以你会遇到同样的问题。

话虽如此,如果您可以检查节点的“点击”处理程序(例如,您的标记中的节点上设置了“onclick”属性),那么您可以将“您的” 在“他们的”之前:

var nodes = document.getElementsByTagName('*'); // collect your nodes however
for(var i=0; i < nodes.length; i++) {
    var node = nodes[i];
    if(!node.onclick)
        continue;

    // At this point we have a node with an "onclick" attr.
    // Hijack onclick to do something else first.
    var original = node.onclick;
    node.onclick = function() {
        doSomethingElse();
        return original.apply(this, arguments);
    }
}

参见this answer了解如何检查其他库中节点的事件(如果您正在使用一个库)。您也可以将它与这些库一起使用doSomethingElse()

关于javascript - 将事件添加到队列头部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/487069/

相关文章:

python - 如何将系统音频抓取到python?

javascript - 如何在应用程序的任何位置使用 AWS Amplify React 组件

javascript - 使用 google map api 获取方向而不使用 map

javascript - 滚动后无法更改某些元素样式

python - QUIT pygame 事件未定义

javascript - 我可以使用 jQuery 在 GWT 小部件上触发事件吗?

javascript - 范围未在资源回调函数外部更新

javascript - 在 Laravel + AngularJS 中编辑

javascript - 检测 div 中的更改并重新绑定(bind)事件 jQuery

c# - 在 C# 中删除事件处理程序