Прототип наблюдать за событием в Opera - PullRequest
5 голосов
/ 04 февраля 2011

Я использую Prototype и создаю Event.observe для window.document.

Я ловлю ввод (keyCode 13) и alt + f (altKey && keyCode = 70).

Мой код работает супер с Firefox, IE и Chrome. С оперой нет. Ввод ловится, но только если мой фокус отсутствует при вводе текста. Alt + F вообще не работает.

Это ошибка в Prototype или мне нужно сделать что-то «дополнительное» в Opera, чтобы продолжить? Как я уже сказал, во всех других браузерах мой код работает ....

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Во-первых, следующий полезный ресурс: http://unixpapa.com/js/key.html

Во-вторых, вы должны знать, что есть разница между нажатием клавиши (или клавишей) и нажатием клавиши.нажатие клавиш, как правило, не допускает использование клавиш-модификаторов, хотя некоторые из них в Opera позволяют управлять.Лучше использовать keydown для согласованности между браузерами.

Я получаю keyCode === 13 в Opera 11.10 независимо от того, введено ли текстовое поле или нет, и независимо от того, используется ли Prototype следующим образом:

Event.observe(document, 'keydown', function (e) {
    alert(e.charCode+'::'+e.keyCode);
});

или непосредственно с использованием собственного метода (с использованием attachEvent for IE):

if (document.addEventListener) {
    document.addEventListener('keydown', function (e) {
        alert(e.charCode+'::'+e.keyCode);
    }, false);
}
else { // IE
    document.attachEvent('onkeypress', function (e) {
        alert(e.charCode+'::'+e.keyCode);
    });
}

Однако alt действительно не обнаруживается внутри текстового поля, если не объединен с управляющей или функциональной клавишей (хотя это неработать в Chrome или IE).Это может быть связано с тем, что Windows использует alt для предоставления доступа к строке меню приложений.

Вы можете попробовать использовать управляющую клавишу и использовать protectDefault () (чтобы избежать поведения по умолчанию, такого как ctrl-f, выполняющего поиск страницы), хотя это можетраздражать ваших пользователей, которые не хотят, чтобы их поведение браузера отключалось для вашей страницы.

0 голосов
/ 04 января 2012

Alt-F активирует меню, и Opera не позволяет JavaScript обрабатывать нажатие этой клавиши.

...