Событие Onkeydown запускается в IE и Chrome, но не в FireFox - PullRequest
0 голосов
/ 15 января 2012

Почему мой код интерактивности клавиатуры работает правильно в IE и Chrome, а не в FireFox? Полный код: http://sgdk2.enigmadream.com/ben/Html5Sample.html. Не стесняйтесь загружать и редактировать файл локально для проверки исправлений (пожалуйста, делайте так, чтобы пропустить неправильные ответы на правильный ответ :)). Он полностью автономен на 100% в одном HTML-файле.

Для вашего удобства здесь, я полагаю, приведен весь код:

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 Ответ

1 голос
/ 15 января 2012

prototype / javascript - firefox не запускает событие нажатия клавиш / нажатия клавиш, если только фокус не находится в текстовом поле

Попробуйте связывать события в документе вместо тела.Также: старайтесь не использовать атрибуты onevent, но создайте прослушиватели событий внутри блока скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...