我用Javascript编写游戏。我希望浏览器可以将箭头键映射到不同的值,因此我的目标是允许用户初始映射箭头键和整个游戏中使用的其他键,因为每个人的首选项都会有所不同......以后如果重新配置这些键配置,他们选择这样做。
为了提供MCVE,我使用了代码document.onkeydown = function(ev) { console.log(ev.keyCode); }
,可以轻松地将其粘贴到任何浏览器的javascript控制台中。我觉得onkeydown方法是必需的,因为它是唯一一个可靠地重复,因为键被按下,这是我想要的行为。
运行Chrome 42.0.2311.152 m或IE11时,按任意箭头键会导致打印255的事件,然后是打印实际键码的事件。使用Firefox 35.0.1时,其后面是实际的密钥代码。
换句话说,我的问题是每个箭头键击引发两个事件,并且两个事件的值根据浏览器的不同而有很大差异。我想第一个事件是指示按下箭头(或其他控件)键,第二个事件与它结合以提供该控制键的唯一标识符。
我可以通过现在和将来与所有浏览器兼容的方式来抑制第一个事件吗?
或者,是否有另一个我可以使用的事件监听器,当按键被按下时会重复,并且现在和将来都可以使用所有浏览器的任何键?