Je veux attraper Ctrl+S dans Chrome et empêcher le comportement du navigateur par défaut pour enregistrer la page. Comment?
(Il suffit de poster la question et la réponse car j'étais après cela pendant assez longtemps et je n'ai pas trouvé de solution)
Pour autant que je puisse voir, la sauce secrète est que Ctrl+S ne déclenche PAS l'événement de pression de touche, uniquement l'événement de pression de touche.
Utilisation de jQuery.hotkeys :
$(document).bind('keydown', 'ctrl+s', function(e) {
e.preventDefault();
alert('Ctrl+S');
return false;
});
Uniquement avec jQuery:
$(document).bind('keydown', function(e) {
if(e.ctrlKey && (e.which == 83)) {
e.preventDefault();
alert('Ctrl+S');
return false;
}
});
Modifier 2012.12.17 - jQuery.hotkeys dit
Les raccourcis clavier ne sont pas suivis si vous êtes à l'intérieur d'un élément d'entrée (sauf si vous liez explicitement le raccourci clavier directement à l'entrée). Cela permet d'éviter les conflits avec la frappe normale des utilisateurs.
"Emprunté" à Remplacement du contrôle + s (fonctionnalité de sauvegarde) dans le navigateur
document.addEventListener("keydown", function(e) {
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
e.preventDefault();
alert('captured');
}
}, false);
document.onkeydown = function (e) {
e = e || window.event;//Get event
if (e.ctrlKey) {
var c = e.which || e.keyCode;//Get key code
switch (c) {
case 83://Block Ctrl+S
e.preventDefault();
e.stopPropagation();
break;
}
}
};