为什么我的键盘交互代码在IE和Chrome中正常运行,而不是FireFox?完整代码位于http://sgdk2.enigmadream.com/ben/Html5Sample.html。随意在本地下载和编辑文件以测试更正(请为了跳过错误的答案而做正确答案:))。它在一个HTML文件中完全自包含100%。
为了您的方便,我相信,这里涉及的所有代码都是:
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中运行良好。
答案 0 :(得分:1)
prototype/javascript - firefox not firing keypress/keydown event unless focus is in textbox
尝试在文档而不是正文上绑定事件。另外:尽量不要使用'onevent'属性,而是在脚本块中创建事件监听器。