使用Google Closure(或纯Javascript)将KeyHandler事件分派到新的DOM目标

Dispatch KeyHandler event to new DOM target with Google Closure (or plain Javascript)

本文关键字:分派 事件 目标 DOM KeyHandler Closure Google 或纯 Javascript 使用      更新时间:2023-09-26

我有一个web应用程序,需要捕获页面上的任何键盘事件,并将它们定位到适当的editable-div

  • 如果editable-div有焦点,那么事件流到我的事件处理程序和DOM,将对应键的字符推入DIV
  • 但是,如果editable-div不是当前的焦点目标,我可以用事件处理程序捕获事件,但是与按下的键对应的字符不会被推入DIV

我之前的实现依赖于jQuery, $.trigger()正在做正确的事情:将键盘事件从非匹配目标移动到我选择的默认editable-div

我试图实现相同的没有jQuery,并与谷歌关闭。我尝试了dispatchEvent的各种咒语,但没有成功触发新的虚拟按键。

在ClojureScript中,尝试做一些幼稚的事情,如

(.dispatchEvent new-target (.getBrowserEvent event))

将导致浏览器报错The event is already being dispatched.

这个问题有什么简单的解决办法吗?

您可以使用goog.testing.events/fireKeySequence创建类似于jQuery的trigger的事件。

更多讨论。