簡體   English   中英

JS檢測沒有事件對象的按鍵

[英]JS Detecting key press without an event object

我有一個javascript應用程序,當按鍵事件包含控制鍵(CTRL,CMD,SHIFT)時,它會進入特殊狀態。 當keyup事件觸發時,應用程序離開狀態。

當前代碼如下:

$(window).keydown ->
  if [16, 17, 91, 93, 224].indexOf(e.which) >= 0 # CMD, CTRL, Shift
    # Enter special mode

$(window).keyup ->
  if [16, 17, 91, 93, 224].indexOf(e.which) >= 0 # CMD, CTRL, Shift
    # Exit special mode

問題是,例如,如果您按CTRL / CMD + T來打開新標簽頁,則該應用會進入此狀態,但它永遠不會收到鍵入事件,因此除非您按CMD鍵,否則它不會離開它再次。

理想的做法是防止在按下CMD + T之類的東西時激活選擇模式,但是作為解決方法,啟動一個循環來檢查是否仍在按下該鍵是可以的。 問題是,如何在沒有事件發生的情況下檢查是否仍然按下某個鍵?

窗口模糊時,您是否嘗試過退出特殊模式? 您可以對超時進行此操作,也可以將窗口留在后面並開始堆積。 像這樣:

$(window).blur(function(){
    // escape special mode
});

這使您可以取消設置窗口未聚焦時可以繼續運行的所有功能。 您還可以使用$(window).focus事件返回任何已釋放的觸發器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM