【发布时间】:2012-01-26 05:01:57
【问题描述】:
如何防止 JavaScript 同时处理两个事件?
我声明了一个事件处理程序,例如document.addEventListener('keydown',function(e)
{},false)
在这种情况下,我不希望处理程序在处理完当前事件之前处理任何事件。
【问题讨论】:
标签: javascript events event-handling
如何防止 JavaScript 同时处理两个事件?
我声明了一个事件处理程序,例如document.addEventListener('keydown',function(e)
{},false)
在这种情况下,我不希望处理程序在处理完当前事件之前处理任何事件。
【问题讨论】:
标签: javascript events event-handling
Javascript 是单线程的,因此当前事件处理将在下一个事件触发之前完成。您不必做任何事情来保证一次只处理一个事件。
您可以从这些其他帖子中了解有关此主题的更多信息:
How does JavaScript handle AJAX responses in the background?(描述 javascript 中的事件队列如何操作)
Can JS event handlers interrupt execution of another handler?
【讨论】:
没有什么可以同时处理事件。事件顺序取决于正在使用的浏览器。由您决定如何在捕获或冒泡模型中注册事件,或在 w3c 模型中同时使用这两者。
例如在 W3c 模型中,W3c 模型中发生的任何事件都会被捕获,直到达到目标,然后它又开始冒泡。
您可以决定通过 addEventListner() 方法在捕获或冒泡阶段注册您的事件。
【讨论】: