Клавиша Esc не распознается в Firefox

По какой-то причине этот скрипт не работает в Firefox:

document.onkeydown=function keypress(e) {
    if (e.keyCode == 27) {
        window.location = "/edit"
    };
};

Он отлично работает в Chrome, но почему-то не работает в Firefox.

По сути, он загружает /edit страница, когда вы нажимаете клавишу выхода.

3 ответа

Решение

Использовать:

document.onkeydown=function keypress(e) {
  e=(e||window.event);  
    if (e.keyCode == 27) {
        try{e.preventDefault();}//Non-IE
        catch(x){e.returnValue=false;}//IE
        window.location = "/edit";
    };
}

Действие по умолчанию для ESC - остановить загрузку страницы,
поэтому вы должны предотвратить это поведение, иначе вы не сможете изменить местоположение.

Скрипка: http://jsfiddle.net/doktormolle/CsqgE/ (прежде чем использовать ESC, щелкните в фрейме результатов)

Но, тем не менее, вы действительно должны использовать другой ключ.
Пользователь ожидает, что загрузка текущей страницы прекращается, если он использует ESC, и ничего больше.

У меня работает обработчик событий: http://jsfiddle.net/Tm2PZ/

Я подозреваю, что ваше местоположение недействительно.

Попробуйте установить window.location.href вместо.

если вы не используете «Escape keyup» или «Escape keydown»
для других вещей в вашем коде, вы можете использовать «keyup» для замены нажатия клавиши **

       document.body.addEventListener( 'keyup', function (e) {
        e=(e||window.event);
        if (e.key == "Escape") {
            console.log('escape is pressed');
        }    
    },false ); 

e.keyCode устаревает , используйте e.key , добавьте «console.log(e.key)»
в свой слушатель, если вы хотите получить имя клавиши,
это лучше, потому что оно адаптируется к клавиатуре, которая не имеет такого же состава и e.keyCode не адаптируется

Другие вопросы по тегам