在IE和Chrome中激活Onkeydown事件但不是FireFox

时间:2012-01-15 16:09:48

标签: javascript html5 canvas events keyboard

为什么我的键盘交互代码在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中运行良好。

1 个答案:

答案 0 :(得分:1)

prototype/javascript - firefox not firing keypress/keydown event unless focus is in textbox

尝试在文档而不是正文上绑定事件。另外:尽量不要使用'onevent'属性,而是在脚本块中创建事件监听器。