这是一个抽象问题,但我一直在思考它的实用性,也许它已经被解决或者启发某人基于它做些事情。在JS中同步浏览器事件
最近我遇到了一个问题,三个浏览器事件都是由单个用户交互引发的:点击,模糊和焦点。当用户从一个输入点击到另一个输入时,发生这些事件;并且在用户从一个标签到另一个标签时发生类似的设置。
我遇到的麻烦是他们按照这个顺序开火:模糊,焦点,点击。这意味着,如果模糊事件导致DOM更改,则点击事件可能会受到影响。我真的很想点击,模糊,专注 - 但这不是浏览器给我的。
我觉得可以生成一个通用工具,捕获和取消浏览器事件,然后同步它们并为所有三个事件启动一个处理程序。也许扩展Event类以便事件可以恢复。
是否有更抽象的设计模式,我可以在这里使用?什么东西可以让我设置任意数量的事件侦听器,然后在所有事件完成时触发单个事件?它是否已经有一个实现?所有建议欢迎。
是的,你可以实现你的抽象监听器。但是,请确定当它们没有被同一动作触发时应该发生什么(这可能只能实现为“一起在短时间内一起开火”)。从关注不同于您感兴趣的元素的模糊事件,或者通过不点击而这样做。 – Bergi 2014-09-05 13:01:25