大脑冻结 - 无法用javascript捕捉击键

时间:2015-06-01 21:59:28

标签: javascript events keyboard

我知道它非常简单,但为什么这些代码不会在按键上发出警报?

尝试使用Chrome和Firefox。

<html>
<head></head>

<body style="height: 100%; margin: 0px; padding: 0px;">

<div style="height: 100%;" id="main">sds</div>

<script>
window.onload = function() 
{
var m = document.getElementById("main");
m.onkeydown = function(event) { alert("keydown!"); };
m.focus();
};
</script>
</body>
</html>

感谢

1 个答案:

答案 0 :(得分:2)

除非是<input>字段,否则不应该抓住元素上的按键。将main替换为正文:

var m = document.getElementsByTagName("BODY")[0];

这将捕获页面上的所有击键,除非输入字段上有嵌套的处理程序。

您遇到的问题是因为事件冒泡/滴漏和输入焦点。主要不是“专注”,因此它不会触发任何键盘事件。

相反,当没有文本字段被聚焦而没有进行文本选择时,正文被隐含地“聚焦”。