【发布时间】:2012-02-10 21:05:26
【问题描述】:
为什么我的键盘交互代码在 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 中运行良好。
【问题讨论】:
标签: javascript html canvas events keyboard