Ctrl+S preventDefault в Chrome
Я хочу поймать Ctrl+S в Chrome и предотвратите поведение браузера по умолчанию для сохранения страницы. Как?
(просто разместив вопрос и ответ, как я был после этого в течение довольно долгого времени и не нашел решения)
3 ответов
насколько я вижу, секрет соуса в том, что Ctrl+S не запускает событие нажатия клавиши, только событие keydown.
используя С помощью jQuery.горячие клавиши:
$(document).bind('keydown', 'ctrl+s', function(e) {
e.preventDefault();
alert('Ctrl+S');
return false;
});
только с jQuery:
$(document).bind('keydown', function(e) {
if(e.ctrlKey && (e.which == 83)) {
e.preventDefault();
alert('Ctrl+S');
return false;
}
});
изменить 2012.12.17 - jQuery.горячие клавиши говорит
горячие клавиши не отслеживаются, если вы находитесь внутри элемента ввода (если вы явно привязать горячую клавишу непосредственно к входу). Этот помогает избежать конфликт с обычным пользовательским вводом.
"позаимствовали" у переопределение control+s (сохранить функциональность) в браузере
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;
}
}
};