2017-08-08 33 views
1

我很困惑,爲什麼當我按下一個鍵時,我的函數沒有記錄keydown事件?Keydown不爲我的eventlistener工作

window.addEventListener('keydown', function(e) { 
 
    console.log(e); 
 
});
<h1> Start typing </h1>

+0

它工作正常。請再檢查一次。還要檢查控制檯中的任何錯誤。 – Rajesh

回答

2

我認爲,正確的做法必須是使用文檔對象,而不是窗口對象。

像下圖的代碼應工作:

document.addEventListener('keydown', function(e) { 
    console.log("event", e); 
}); 
+0

https://stackoverflow.com/a/2671217/211627 – JDB

+0

@JDB我只是在尋找一個鏈接來解釋爲什麼要使用文檔而不是窗口。 –

+0

這也許是有用的:https://stackoverflow.com/questions/33110338/window-document-addeventlistener-vs-window-addeventlistener/33110391#33110391 –

0

您的片段似乎是好的。所以它可能與周圍的環境有關,你在哪裏運行它。

(也就是說,如果使用document其他答案尚未幫你。)

請調查它失敗的情況。一個可能的原因可能是keyEvent被任何沿着泡泡方式的EventListener取消。

您正在從最頂級的窗口級別(甚至高於文檔級別)獲取​​。

如果沿事件方式停止冒泡,則不會看到冒泡。

嘗試例如

document.addEventListener("keydown", function(e) { 
    e.stopPropagation(); 
}); 

這也將阻止您在您的一部開拓創新的事件監聽器看到該keydown。