Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ctrl+S preventDefault in Chrome

I Want to catch Ctrl+S in Chrome, and prevent the default browser behavior to save the page. How?

(Just posting the question & answer as I was after this for a pretty long time and didn't find a solution)

like image 251
zupa Avatar asked Jun 12 '12 16:06

zupa


2 Answers

As far as I can see, the secret sauce is, that Ctrl+S does NOT fire the keypress event, only the keydown event.

Using jQuery.hotkeys:

$(document).bind('keydown', 'ctrl+s', function(e) {     e.preventDefault();     alert('Ctrl+S');     return false; }); 

Only with jQuery:

$(document).bind('keydown', function(e) {   if(e.ctrlKey && (e.which == 83)) {     e.preventDefault();     alert('Ctrl+S');     return false;   } }); 

Edit 2012.12.17 - jQuery.hotkeys says

Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.

like image 197
zupa Avatar answered Sep 26 '22 00:09

zupa


"Borrowed" from Overriding control+s (save functionality) in browser

document.addEventListener("keydown", function(e) {   if (e.key === 's' && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {     e.preventDefault();     alert('captured');   } }, false); 
like image 37
BumbleB2na Avatar answered Sep 23 '22 00:09

BumbleB2na