[英]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.