不推荐阅读MDN docs on keypress event,event.which
,event.keyCode
和event.charCode
,而event.key
和event.char
在某些浏览器上仍未实现。在这种情况下,尝试维护代码以遵守现代标准似乎很困难,因为有许多不同的(显然是看不起的)方法来访问角色。那么最好的方法是什么呢?这就是我想要做的事情,但请告诉我是否有更好的方法:
document.addEventListener('keypress', function(event) {
var code = event.keyCode || event.charCode || event.which;
var key = String.fromCharCode(code);
var upper = event.shiftKey;
if(typeof event.key === 'string') {
console.log(event.key);
} else if(typeof code === 'number') {
console.log(upper ? key.toUpperCase() : key);
}
});

要运行此功能,请打开控制台,单击空白页,然后在键入键时查看输出。