Javascript не может зафиксировать событие нажатия клавиши ESC в браузере Vivaldi

Я разрабатываю библиотеку Javascript (AnyList), в которой пользователи могут нажать клавишу ESC, чтобы прервать редактирование поля ввода. Это реализуется путем перехвата события нажатия клавиши ESC (с помощью jQuery):

      inp_elem.on("keyup", init_opt, $.proxy(this._processKeyup,this));
...
$.any.DataView.prototype._processKeyup = function (event)
{
  if (event.preventDefault)
    event.preventDefault();
  if (event.type == "keyup" && event.which == 27) { // ESC. In Vivaldi, we never get here.
    ...
  }
  ...

Это отлично работает в Firefox, Edge, Chrome и т. Д., Но не в браузере Vivaldi - метод _processKeyup никогда не вызывается.

Вивальди использует клавишу ESC, чтобы остановить загрузку html-страницы, но также и другие браузеры, и даже если я удалю сопоставление клавиатуры ESC (в Vivaldi есть опция для этого), я не смогу поймать событие ESC в моем Javascript.

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

1 ответ

Похоже, браузер Vivaldi ловит keyUp событие, поэтому лучше использовать keyDown событие вместо этого.

Рабочее решение может быть примерно таким:

      elem.onkeydown = function (event) {   
    if (event.type === "keydown" && event.key === 'Escape') {
        alert('esc - everywhere'); 
        }
}
Другие вопросы по тегам