String.fromCharCode keypress 和 keydown 返回错误的字符

String.fromCharCode on keypress and keydown are returning wrong characters

我正在尝试捕捉在屏幕上显示之前插入的字符以验证屏幕。查看我的代码

_this.on('keypress keydown',function(e){
    var t = e.target;
    var k = e.which || e.keyCode;
    var c = String.fromCharCode(k);
    console.log(String.fromCharCode(k))
});

例如,如果我键入 ~ 或任何其他标点符号,它会 returns 非拉丁字符,例如 å。我在使用 Chromium,Ubuntu。

我注意到按键被这些特殊字符忽略了,真遗憾,这就是我尝试使用 keydown 的原因。但是 keydown 无法检测到正确的字符并将它们转换为斯堪的纳维亚和亚洲字符。

是否有解决方法来输入正确的字符?

this wonderful answer to a similar question, and the associated jsfiddle: http://jsfiddle.net/S2dyB/17/

一个问题是 keypresskeydown 事件不可互换。 keypress 用于检索键入的实际字符(因此忽略特殊键),而 keydown returns 键盘上每个键的唯一字符代码。为了加剧这种情况,不同的浏览器对每个事件的处理方式略有不同,从而使事情变得一团糟。

看看 e.whichkeydownkeypress 之间的变化:http://jsfiddle.net/9TyzP/

如您所见,它们很少匹配 - 对于许多键,keypress 的显示代码根本没有改变,表明事件没有针对该键触发。