3

私のコードは 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];
};
4

4 に答える 4

0

さまざまな解決策を試しましたが、それでも 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
}
于 2015-08-16T18:49:49.977 に答える