onkeydown和onkeyup事件在Internet Explorer 8上不起作用 [英] onkeydown and onkeyup events don't work on Internet Explorer 8

查看:180
本文介绍了onkeydown和onkeyup事件在Internet Explorer 8上不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码在IE9 / IE10,FF,Chrome和Opera上没有问题,但在较旧的Internet Explorer上没有处理键盘输入。

My code works without problems on IE9/IE10, FF, Chrome and opera but on older Internet Explorer no Keyboard input is handled.

我有以下代码:处理事件。它只应在按下新按钮时触发。

I have the following code for handling events. It should only fire when a new button is pressed.

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];
};


推荐答案

尝试

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];
};

这篇关于onkeydown和onkeyup事件在Internet Explorer 8上不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆