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');
}
}