我有一个 Firefox 插件,可以在浏览器窗口处于事件状态时监听 keydown 事件,但我也想在没有浏览器窗口处于事件状态时接收事件。我目前正在向所有浏览器窗口添加事件监听器,并尝试创建 Firefox 热键,但它与浏览器窗口方法具有相同的有限范围。
我知道我可以使用 Windows API 来完成此操作,所以也许我唯一的选择就是创建一个插件?
最佳答案
这不可能直接实现。如果浏览器没有从窗口系统接收到事件,则浏览器无法将事件传递给扩展程序。据推测,您可以创建一个特定于操作系统/窗口系统的插件,该插件允许利用窗口系统的 API 以通常接收此类事件(假设窗口系统 API 允许这样做)。
您似乎想要接收窗口系统中发生的事件,这些事件不针对任何浏览器窗口。窗口系统通常不会将 UI 事件传递给不活动或未以某种方式操作的窗口。因此,浏览器不知道此类事件已发生。
一般来说,这可能会违反用户对浏览器和窗口系统如何运行的期望。您应该认真考虑您的附加组件是否适合执行此操作。这样做的一个可能的原因是有一个附加组件,它添加一个系统级热键,将最新的窗口/选项卡带到窗口系统的前面。在这种情况下,如果它明确是附加组件的功能,那么这样做是合理的。至少,您可能会与其他窗口系统级热键发生冲突,这些热键要么是默认的,要么是由用户设置的。应注意至少允许用户更改为您正在创建的任何功能分配的热键。
关于javascript - 在浏览器窗口未处于事件状态的情况下监听 keydown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26442146/