我很困惑,爲什麼當我按下一個鍵時,我的函數沒有記錄keydown事件?Keydown不爲我的eventlistener工作
window.addEventListener('keydown', function(e) {
console.log(e);
});
<h1> Start typing </h1>
我很困惑,爲什麼當我按下一個鍵時,我的函數沒有記錄keydown事件?Keydown不爲我的eventlistener工作
window.addEventListener('keydown', function(e) {
console.log(e);
});
<h1> Start typing </h1>
我認爲,正確的做法必須是使用文檔對象,而不是窗口對象。
像下圖的代碼應工作:
document.addEventListener('keydown', function(e) {
console.log("event", e);
});
https://stackoverflow.com/a/2671217/211627 – JDB
@JDB我只是在尋找一個鏈接來解釋爲什麼要使用文檔而不是窗口。 –
這也許是有用的:https://stackoverflow.com/questions/33110338/window-document-addeventlistener-vs-window-addeventlistener/33110391#33110391 –
您的片段似乎是好的。所以它可能與周圍的環境有關,你在哪裏運行它。
(也就是說,如果使用document
其他答案尚未幫你。)
請調查它失敗的情況。一個可能的原因可能是keyEvent
被任何沿着泡泡方式的EventListener取消。
您正在從最頂級的窗口級別(甚至高於文檔級別)獲取。
如果沿事件方式停止冒泡,則不會看到冒泡。
嘗試例如
document.addEventListener("keydown", function(e) {
e.stopPropagation();
});
這也將阻止您在您的一部開拓創新的事件監聽器看到該keydown。
它工作正常。請再檢查一次。還要檢查控制檯中的任何錯誤。 – Rajesh