<input type="text"></input>
<script>
var a = document.getElementsByTagName('input')[0];
a.onkeypress = function(evt) {
this.evt = evt || event;
var b = String.fromCharCode(evt.keyCode);
while(forEach(evt) {
alert("You pressed " + b);
}
};
</script>
这似乎不起作用。当用户按下某个键时,它应该始终提醒该键。 这里的浏览器是Chrome。
最佳答案
它不起作用,因为您正在调用一个未定义的函数 (forEach
),此处:
while(forEach(evt) {
// ^
如果您查看 JavaScript 控制台,您会看到与此相关的错误。
此外,您不想分配给 this
上的 evt
属性:
this.evt = evt || event; // <== Don't do this
只需使用参数:
evt = evt || event;
如果您要单独提醒每个按键,则没有理由循环。
此外,input
元素没有结束标记。它应该只是:
<input type="text">
或(在 XHTML 中,也可以在 HTML 中):
<input type="text"/>
不:
<input type="text"></input>
最后,请注意,某些浏览器使用 which
作为键码,其他浏览器使用 keyCode
。您可以使用 ||
来使用浏览器提供的任何内容:
String.fromCharCode(evt.which || evt.keyCode)
这是一个最小更新:Live Copy | Live Source
<input type="text">
<script>
var a = document.getElementsByTagName('input')[0];
a.onkeypress = function(evt) {
evt = evt || event;
alert("You pressed " + String.fromCharCode(evt.which || evt.keyCode));
};
</script>
关于javascript - 使用javascript如何记录键盘事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831788/