簡體   English   中英

按下鍵盤提示時無法觸發鍵盤提示

[英]Keyup not firing when keydown opens an alert

我有兩個事件處理程序,一個用於keydown,一個用於keyup。 keydown事件處理程序會觸發警報消息,但這可以防止觸發keyup事件。

您可以在此處看到一個非常簡單的示例: http : //jsfiddle.net/boblauer/jaGwT/當keydown打開警報時,不會觸發該keyup,但是當未打開警報時,將觸發該keyup。 這是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時顯示警報,則從“當前按下”列表中刪除這些鍵的代碼永遠不會觸發,因為我的keyup處理程序從未被調用。

我想不出解決這個問題的好方法。 有任何想法嗎?

警報可防止事件發生。 相反,您可以做的是手動觸發此功能,因為它始終會發生。

var keyupfunction = function(e){
    alert('up');
    console.log('up');
}

window.addEventListener('keyup', keyupfunction);

window.addEventListener('keydown', function(e) {
    if (i++ % 2) alert('down');
    console.log('down');
    keyupfunction(e);
});

但實際上,您不應該使用警報。 它可以防止這些事件,但是誰知道它可能還會破壞什么。 請改用自定義內容。

暫無
暫無

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

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