Search code examples
javascriptjqueryvivaldiesc-key

Javascript cannot capture ESC keyup event in Vivaldi browser


I am developing a Javascript library (AnyList) in which users may press the ESC key to abort editing an input field. This is implemented by catching the ESC keyup event (using 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.
    ...
  }
  ...

This works fine in Firefox, Edge, Chrome, etc. but not in the Vivaldi browser - the _processKeyup method is never called.

Vivaldi uses the ESC key to stop the loading of a html page but so do other browsers, and even if I delete the ESC keyboard mapping (there is an option for this in Vivaldi), I am not able to catch the ESC event in my Javascript.

Can anybody help? I really like the Vivaldi browser and would like to see it succeed, but this behaviour breaks my script unneccessarily and is quite annoying.


Solution

  • It seems that Vivaldi browser is catching the keyUp event, so you'd better to use keyDown event instead.

    A working solution could be something like that:

    elem.onkeydown = function (event) {   
        if (event.type === "keydown" && event.key === 'Escape') {
            alert('esc - everywhere'); 
            }
    }