onkeydown和onkeyup事件在Internet Explorer 8上不起作用
onkeydown and onkeyup events don't work on Internet Explorer 8
我的代码在IE9/IE10, FF, Chrome和opera上没有问题,但在旧的Internet Explorer上没有键盘输入处理。
我有以下处理事件的代码。它应该只在按下一个新按钮时触发。
lastEvent = void 0;
heldKeys = {};
window.onkeydown = function(event) {
if (lastEvent && lastEvent.keyCode === event.keyCode) {
return;
}
lastEvent = event;
heldKeys[event.keyCode] = true;
switch (event.which) {
case 80:
return myamp.userInput("positiv");
case 81:
return myamp.userInput("negativ");
}
};
window.onkeyup = function(event) {
lastEvent = null;
return delete heldKeys[event.keyCode];
};
你需要绑定到文档,而不是窗口。
window.onkeyup = function(event) {
window.onkeydown = function(event) {
必须是
document.onkeyup = function(event) {
document.onkeydown = function(event) {
Try
lastEvent = void 0;
heldKeys = {};
window.onkeydown = function(event) {
event = event || window.event; //IE does not pass the event object
if (lastEvent && lastEvent.keyCode === event.keyCode) {
return;
}
lastEvent = event;
heldKeys[event.keyCode] = true;
var keyCode = event.which || event.keyCode; //key property also different
switch (keyCode) {
case 80:
return myamp.userInput("positiv");
case 81:
return myamp.userInput("negativ");
}
};
window.onkeyup = function(event) {
event = event || window.event;
lastEvent = null;
return delete heldKeys[event.keyCode];
};
必须使用规范化的键代码。这样的:
var keyCode = event.which || event.keyCode;
我尝试了不同的解决方案,但这些仍然不能在IE8中正常工作。我想出来的是这样的:
window.onkeyup = function(e) {
e = (e) ? e : window.event; // check if e is defined
var kc = (e) ? e.which : e.keyCode; // assign keyCode
key = (key === undefined) ? e.keyCode : kc; // if keyCode still undefined, reassign it
if (kc == 13) {
//enter was pressed
}
// other code
}
相关文章:
- 在Internet Explorer中,向所选内容添加选项不起作用
- 鼠标事件在 Internet Explorer 中不起作用
- 输入类型的图像在Internet Explorer中不起作用,但在Chrome和Firefox中起作用
- 包含jquery的Javascript在Internet Explorer中不起作用
- onClick和onClientClick事件一起使用.在Internet Explorer中不起作用
- Javascript图像动画在Firefox或Internet Explorer中不起作用
- 使用JS固定标题的表在Internet explorer中不起作用
- Angular $templateCache在 Internet Explorer 中不起作用
- 滑块图像在Internet Explorer中不起作用,但在其他浏览器中有效
- 带有 Internet Explorer 8/9 的 Editor Ace 不起作用
- Window.location 在 Internet Explorer 中不起作用
- Ajax POST 请求在 Internet Explorer 中不起作用
- 脚本在 Internet Explorer 中不起作用
- 在第二次加载时更改 iframe 样式,在 Internet Explorer 9 中不起作用
- 流体布局在 Internet Explorer 7 和 8 中不起作用
- blockUI 在 Internet Explorer 上不起作用
- Javascript在Internet Explorer上不起作用
- 屏幕键盘在 Internet Explorer 中不起作用
- jQuery 动画在 Internet Explorer 中不起作用
- 元标记中的JavaScript在Firefox和Internet Explorer上不起作用