Search code examples
javascriptdom-events

Overriding control+s (save functionality) in browser


I am trying to override the browser save shortcut i.e. Ctrl+S to give the functionality of save in my web App , I am using Google Chrome... I tried keydown listener to observe the keycode but when two keys i.e. Ctrl+S are pressed simultaneously, keycode of S is never returned in event object.


Solution

  • You receive two keydown events: The first is for the control key, and the second is for the letter with the modifier flag turned on. Here's how you listen for a key with a modifier pressed:

    document.addEventListener("keydown", function(e) {
      if (e.keyCode === 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
        e.preventDefault();
        // Process event...
      }
    }, false);
    

    keyCode === 83 corresponds to S key press.

    Taking a page from Google Docs, it uses Cmd-S on Mac and Ctrl-S on other platforms.