2017-08-08 40 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。