繁体   English   中英

在没有激活浏览器窗口的情况下监听按键事件

[英]Listen for keydown event without browser window active

我有一个Firefox插件,当浏览器窗口处于活动状态时,它侦听按键事件,但我也想在没有浏览器窗口处于活动状态时接收事件。 我目前正在将事件侦听器添加到所有浏览器窗口,并且尝试创建Firefox热键,但是它与浏览器窗口方法的作用域相同。

我知道我可以使用Windows API来做到这一点,所以也许我唯一的选择就是创建一个插件?

这不是直接可能的。 如果浏览器未从窗口系统收到事件,则该浏览器无法将事件传递给扩展程序。 大概您可以创建一个特定于OS /窗口系统的插件,该插件可以利用窗口系统的API来通常接收此类事件(假设窗口系统API允许这样做)。

您似乎想接收在窗口系统中发生的事件,这些事件并非针对任何浏览器窗口。 窗口系统通常不会将UI事件传递给未激活或未通过某种方式操纵的窗口。 因此,浏览器不知道发生了此类事件。

通常,这可能会违反用户对浏览器和窗口系统将如何操作的期望。 您应该认真考虑附加组件是否适合这样做。 这样做的可能原因是要有一个附加程序,该附加程序会添加系统级热键,以将最新的窗口/选项卡带到窗口系统的前面。 在这种情况下,如果明确是附加组件的功能,那么这样做是合理的。 至少,您可能会与其他窗口系统级热键冲突,这些热键要么是默认设置,要么是由用户设置的。 至少应注意允许用户更改为您正在创建的任何功能分配的热键。

使用js-ctypes 通过Windows API注册热键 您还必须使用该API侦听热键事件,因此将您的代码放入ChromeWorker中,以免干扰Firefox主线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM