2015-02-09 61 views
1

Web瀏覽器無法捕獲Windows快捷鍵。例如,Windows鍵+ D顯示桌面。Web瀏覽器無法捕獲Windows鍵+ D,爲什麼?

但是,在瀏覽器中,JS只能檢測到Windows鍵的keydown事件,但無法捕獲D的鍵盤事件或windows鍵的keyup事件。

它背後的深層原因是什麼?有沒有解釋它的文件?

+5

我認爲Windows熱鍵不會轉發給瀏覽器。它將在覈心處理 – 2015-02-09 07:06:22

+3

Mac上的Windows Key如何? – Justinas 2015-02-09 07:09:10

+0

Mac上的Windows鍵是我的命令。 – steviesama 2017-09-05 20:42:36

回答

0

不是一個理想的答案,但您可能需要編輯Windows註冊表以使其發生。

  1. 在註冊表中禁用Windows + D。 See this answer
  2. 使用下面的代碼捕獲密鑰。 Source

var log = $('#log')[0], 
 
    pressedKeys = []; 
 

 
var prevKey; 
 

 
$(document.body).keydown(function (evt) { 
 
    var li = pressedKeys[evt.keyCode]; 
 
    if (!li) { 
 
     li = log.appendChild(document.createElement('li')); 
 
     pressedKeys[evt.keyCode] = li; 
 
    } 
 
    $(li).text('Down: ' + evt.keyCode); 
 
    $(li).removeClass('key-up'); 
 
    
 
    if(prevKey){ 
 
     if(prevKey === 91 && evt.keyCode === 68){ 
 
      evt.stopPropagation(); 
 
     } 
 
    } 
 
    
 
}); 
 

 
$(document.body).keyup(function (evt) { 
 
    var li = pressedKeys[evt.keyCode]; 
 
    if (!li) { 
 
     li = log.appendChild(document.createElement('li')); 
 
    } 
 
    $(li).text('Up: ' + evt.keyCode); 
 
    $(li).addClass('key-up'); 
 
});
.key-up { 
 
    opacity: 0.5; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="log"> 
 
    <li>List of keys:</li> 
 
</ul>

0

視窗+ d是由OS捕獲,並且不轉發給瀏覽器。可能的解決方法是使用Ctrl + Windows + D來模擬Windows + D。

相關問題