我有兩個事件處理函數,一個用於keydown,一個用於keyup。 keydown事件處理程序觸發警報消息,但是這可以防止觸發按鍵事件。Keyyd在keydown打開警報時未觸發
您可以在這裏看到一個非常簡單的示例:http://jsfiddle.net/boblauer/jaGwT/當keydown打開警報時,不會觸發安全關閉,但當警報未打開時,將啓動安全關閉。下面是從的jsfiddle代碼:
var i = 0;
window.addEventListener('keydown', function(e) {
if (i++ % 2) alert('down');
console.log('down');
});
window.addEventListener('keyup', function(e) {
alert('up');
console.log('up');
});
我有一個支持聽多鍵組合(如「d + F」)庫,因此當有鍵按下時,我需要將其添加到列表當前按下的鍵,以及釋放鍵時,我需要將其從列表中刪除。我遇到的問題是,如果我想要在顯示d + f時同時顯示警報,那麼從「當前按下」列表中刪除這些按鍵的代碼不會觸發,因爲我的按鍵處理程序永遠不會被調用。
我想不出一個很好的解決這個問題的方法。有任何想法嗎?
這是因爲'alert()'塊 - 你不應該使用'alert()'......來設計你的網站,或者使用某種類型的對話框。 – ahren
在其他情況下也會發生這種情況,例如在超鏈接上標籤,然後點擊回車打開鏈接。當發生這種情況時,enter的keyup事件不會被觸發。 –