大脑冻结 - 无法用 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"。
我知道这很简单,但为什么这段代码在按键时不发出警报?
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"。