0
为什么我的键盘交互代码在IE和Chrome中正确运行,但不是FireFox?完整的代码是http://sgdk2.enigmadream.com/ben/Html5Sample.html。随意在本地下载和编辑文件来测试更正(请跳过正确答案的错误答案:))。它在一个HTML文件中完全独立100%。Onkeydown事件在IE和Chrome中触发但不是FireFox
为了您的方便,在这里,我相信,这是所有参与代码:
var keyboardState;
keyboardState = new Object();
keyboardState.key= { None:0, Enter:13, Shift:16,
/* etc... */};
keyboardState.keyState = new Array();
keyboardState.handleKeyDown = function(e) {
e = e || window.event;
keyboardState.keyState[e.keyCode] = true;
};
keyboardState.handleKeyUp = function(e) {
e = e || window.event;
keyboardState.keyState[e.keyCode] = false;
};
keyboardState.isKeyPressed = function(key) { return keyboardState.keyState[key]; };
...
<body class="unselectable" unselectable="on"
onkeydown="keyboardState.handleKeyDown(event)"
onkeyup="keyboardState.handleKeyUp(event)">
似乎handleKeyDown甚至没有开火,如果我调试这个权利。这必须非常接近正确,因为它在IE和Chrome中运行良好。
我使用的属性,因为我认为我看到一些网站建议它跨浏览器兼容性。但现在我找不到它。不过,我已通过删除onevent属性并添加代码(如“document.onkeydown = keyboardState.handleKeyDown;”)来实现您的建议而且事情似乎在所有浏览器中都起作用。谢谢。 – BlueMonkMN 2012-01-15 17:32:35