отключить функциональную клавишу Opera в JavaScript - PullRequest
2 голосов
/ 16 июня 2010

Я пишу код JavaScript для веб-эмулятора, содержащий функциональные клавиши.Пользователь может нажимать функциональные клавиши клавиатуры для обработки чего-либо в эмуляторе, я использовал функции JavaScript StopPropagation и protectDefault, чтобы останавливать / отменять браузеры, вызывающие их функциональные клавиши (например, F1 вызывает Firefox для открытия страницы справки), и код работает нормальнопод Firefox и Chrome.Но Opera не работает, Opera вызывает обе мои функции и запускает страницу справки Opera.Я использую последнюю версию Opera 10.5 здесь.Кто-нибудь может помочь?

этот код находится в дескрипторе JavaScript FireFox, и он прикреплен к событию onkeydown HTML основного тела:

function KeyHandler(ev)
{
   if(112==ev.keyCode) {InvokeF1();return CancelKey(ev);}
   if(113==ev.keyCode) {InvokeF2();return CancelKey(ev);}
   ...
}

function CancelKey(ev)
{
    ev.stopPropagation();
    ev.preventDefault();
}

IE использовал другой код для CancelKey, который использует ev.CancelBubble =true и ev.returnValue = false.

Ответы [ 2 ]

3 голосов
/ 16 июня 2010

Чтобы предотвратить действие по умолчанию нажатия клавиш в Opera, вам нужно сделать это в событии keypress.Нижеследующее адаптировано из моего ответа на этот похожий вопрос :

var cancelKeypress = false;

document.onkeydown = function(evt) {
    evt = evt || window.event;
    cancelKeypress = /^(112|113)$/.test("" + evt.keyCode);
    if (cancelKeypress) {
        return false;
    }
};

/* For Opera */
document.onkeypress = function(evt) {
    if (cancelKeypress) {
        return false;
    }
};
0 голосов
/ 16 июня 2010

Я полагаю, вы используете событие onkeydown.Это не дает вам необходимую вещь в Opera.Но отлично работает в IE и Firefox.Поэтому вы должны использовать событие onkeypress в опере.Так что у вас должна быть отдельная база кода для Opera в вашем javascript, которая может обрабатывать функциональные клавиши Opera.

...