簡體   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