У меня есть веб-приложение, которое использует клавишу возврата для своих целей. У меня уже давно есть следующая функция, вызываемая document.keyup
, которая годами работала без проблем:
function keyupKeys (evt) {
if(this.activeElement.id == 'q') return true; //ignore input to the search box
if(!evt) var evt = window.event;
var code = evt.keyCode;
//handle special keys:
switch(code) {
case 9: // tab
case 39: // right arrow
press('colon'); break;
case 37: // left arrow
press('colon');
press('colon'); break;
case 13: // enter
press('eq'); break;
case 8: // backspace
press('bs'); break;
case 46: // delete
case 144:// numpad clear
press('c'); break;
case 27: // esc
press('ac'); break;
default: // Not a key this function handles
return true;
}
return false;
};
Недавно я обнаружил, что Chrome в Windows и Chromium в Linux начали возвращаться назад при нажатии клавиши Backspace. Раньше такого не было. Мне еще предстоит протестировать другие браузеры.
Связанные вопросы по SO заставили меня изменить случай возврата таким образом:
case 8: // backspace
if(evt.preventDefault) evt.preventDefault();
press('bs'); break;
Однако это изменение не имело никакого эффекта. Кроме того, поскольку браузер возвращается назад, я не могу использовать какие-либо инструменты отладки в консоли Javascript, поэтому я понятия не имею, что происходит.
Может ли кто-нибудь объяснить, что происходит, и предложить способ исправить это?
focus
, текстовое поле отлично работает. иначе не забирай мой backspace - person WhiteHat   schedule 16.08.2015var evt
— просто используйтеevt
, объявленный вами в аргументах функции! - person metadings   schedule 16.08.2015