[英]Determine what triggered focus event?
我需要确定导致焦点事件的原因。
理想情况下,我想区分单击、选项卡/键盘输入和手动(通过代码)触发器。
我怎样才能做到这一点?
我正在查看事件 object,但我没有看到任何太有用的东西。
如果焦点来自$x.focus()
调用,则该事件将没有originalEvent
属性,因为没有来自浏览器的事件,所以:
if(ev.hasOwnProperty('originalEvent')) {
// Focus event was manually triggered.
}
为了区分基于键盘和鼠标的焦点事件,您可以尝试将keydown
处理程序绑定到其他所有内容以检测Tab或Shift-Tab但这将是一个严重的黑客攻击并且可能不可靠; 例如,在 iPad 上,您没有按Tab键移动到下一个字段,而是在弹出键盘中按Next或Previous来移动,这些可能根本不会注册为按键。
还有一个类似的关于click
事件的问题可能也很有趣:
正如您在评论中指出的那样,您可以捕获click
事件以检测基于鼠标的焦点更改并在某处设置标志以记住它。 然后你会有这个:
originalEvent
,则手动触发焦点更改(即$x.focus()
或类似的)。您必须注意单击和焦点事件的顺序正确,并且您需要确保在完成后清除标志。 这可能不是防弹的,但也许不需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.