Javascript 使用onkeydown(而不是onkeypress)按下了哪个字符

Javascript 使用onkeydown(而不是onkeypress)按下了哪个字符,javascript,google-chrome,keyboard,keyboard-events,Javascript,Google Chrome,Keyboard,Keyboard Events,我需要知道在onkeydown事件中按下了什么字符 这个答案看起来很简单 window.onkeydown=函数(e){ 控制台日志(e.key); e、 preventDefault();//我还需要这个 } 。。但它对Chrome不起作用:未定义 这: String.fromCharCode(e.keyCode) 也不起作用,因为它对a和a、-和6没有区别(用我的法语键盘布局,但用另一种布局可能会有些不同) 如何知道在onkeydown事件中按下的字符? jQuery有解决方案吗 重要

我需要知道
onkeydown
事件中按下了什么字符

  • 这个答案看起来很简单

    window.onkeydown=函数(e){
    控制台日志(e.key);
    e、 preventDefault();//我还需要这个
    }

    。。但它对Chrome不起作用:
    未定义

  • 这:

    String.fromCharCode(e.keyCode)

    也不起作用,因为它对
    a
    a
    -
    6
    没有区别(用我的法语键盘布局,但用另一种布局可能会有些不同)

如何知道在
onkeydown
事件中按下的字符?
jQuery有解决方案吗


重要提示:答案可能是:“不要这样做,改用
onkeypress
”。 这对我的目的不起作用,因为在Chrome上,当调用
onkeypress
时,使用
e.preventDefault()
阻止默认浏览器的行为为时已晚。所以我真的需要使用
onkeydown

重要提示2:我想在最后实现的是能够(在
onkeydown
期间)知道键
+
(或者
=
,因为它在同一个键上)是否被按下。 使用
keyCode
并不容易,因为
+
可以:

FF WIN     CHROME WIN     IE WIN      FF MAC     SAFARI MAC     
61          187           187          173           189 !! (= the key - on CHROME WIN !!)

或者使用US布局的
1O7
等。我确信它与其他键盘布局有很多不同的值。

按下
keydown
事件不会告诉您按下了哪个字符,而是告诉您按下了哪个键。无论如何,您正在查找
e.which
@nnnnnn,如何查找
+
键是否已按下、交叉浏览器、交叉操作系统和交叉键盘布局?(这并不容易,请参见问题末尾的表格)我的键盘上有两个
+
键,一个与
=
键相同(按shift键表示
+
,您可以在事件处理程序中测试shift),另一个在数字键盘中。你想同时测试这两个吗?和@nnnnnn@Blazemonger No,
事件。这根本解决不了问题:它可以是61(FF)、187(Chrome)、173(FF Mac)等,在其他浏览器或键盘布局上还有很多其他值。。。。所以这对我定位
+
没有帮助。