Клавиша 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 не адаптируется