Estoy desarrollando una biblioteca Javascript ( AnyList ) en la que los usuarios pueden presionar la tecla ESC para cancelar la edición de un campo de entrada. Esto se implementa capturando el evento ESC keyup (usando 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. ... } ...Esto funciona bien en Firefox, Edge, Chrome, etc. pero no en el navegador Vivaldi: nunca se llama al método _processKeyup.
Vivaldi usa la tecla ESC para detener la carga de una página html, pero también lo hacen otros navegadores, e incluso si elimino la asignación del teclado ESC (hay una opción para esto en Vivaldi), no puedo capturar el evento ESC en mi JavaScript.
¿Alguien puede ayudar? Me gusta mucho el navegador Vivaldi y me gustaría que tuviera éxito, pero este comportamiento rompe mi secuencia de comandos innecesariamente y es bastante molesto.
Parece que el navegador Vivaldi está detectando el evento keyUp , por lo que es mejor usar el evento keyDown en su lugar.
Una solución de trabajo podría ser algo así:
elem.onkeydown = function (event) { if (event.type === "keydown" && event.key === 'Escape') { alert('esc - everywhere'); } }