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

brain freeze - cant catch keystrokes with javascript

我知道这很简单,但为什么这段代码在按键时不发出警报?

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>

谢谢

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

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

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

您遇到的问题是因为事件bubbling/trickling和输入焦点。 main 没有 "focused",所以它不会触发任何键盘事件。

相反,当没有文本字段获得焦点并且没有进行文本选择时,正文隐式 "focused"。