zup*_*upa 37 javascript jquery google-chrome preventdefault
我想在Chrome中捕获Ctrl+ S,并阻止默认浏览器行为来保存页面.怎么样?
(只是发布问题和答案,因为我在这之后很长一段时间没找到解决方案)
zup*_*upa 52
据我所见,秘诀就是,Ctrl+ S不会触发按键事件,只会触发keydown事件.
$(document).bind('keydown', 'ctrl+s', function(e) {
e.preventDefault();
alert('Ctrl+S');
return false;
});
Run Code Online (Sandbox Code Playgroud)
只有jQuery:
$(document).bind('keydown', function(e) {
if(e.ctrlKey && (e.which == 83)) {
e.preventDefault();
alert('Ctrl+S');
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
编辑2012.12.17 - jQuery.hotkeys说
如果您在输入元素内部,则不会跟踪热键(除非您将热键直接绑定到输入).这有助于避免与普通用户输入冲突.
Bum*_*2na 15
浏览器中的Overriding control + s(保存功能) "借用"
document.addEventListener("keydown", function(e) {
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
e.preventDefault();
alert('captured');
}
}, false);
Run Code Online (Sandbox Code Playgroud)
小智 6
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;
}
}
};
Run Code Online (Sandbox Code Playgroud)