Ctrl+S 防止 Chrome 中的默认值

Ctrl+S preventDefault in Chrome

本文关键字:默认值 Chrome 防止 Ctrl+S      更新时间:2023-09-26

我想在Chrome中捕获Ctrl + S,并阻止默认浏览器行为来保存页面。如何?

(只是发布问题和答案,因为我已经追了很长时间,没有找到解决方案)

据我所知,秘密武器是,Ctrl + S不会触发按键事件,只会触发键向下事件。

使用 jQuery.hotkeys:

$(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.hotkeys 说

如果您在输入元素内,则不会跟踪热键(除非您 将热键直接显式绑定到输入)。这有助于避免 与正常用户键入冲突。

"借用" 在浏览器中覆盖控件+s(保存功能)

document.addEventListener("keydown", function(e) {
  if (e.key === 's' && (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;
        }
    }
};
   

多合一解决方案可防止数据

// disable right click
$(function() {
    $(this).bind("contextmenu", function(e) {
        e.preventDefault();
    });
}); 
// Prevent F12      
$(document).keydown(function (event) {
    if (event.keyCode == 123) { // Prevent F12
        return false;
    } else if (event.ctrlKey && event.shiftKey && event.keyCode == 73) { // Prevent Ctrl+Shift+I        
        return false;
    }
});
//stop copy of content
function killCopy(e){
    return false
}
function reEnable(){
    return true
}
document.onselectstart=new Function ("return false")
    if (window.sidebar){
    document.onmousedown=killCopy
    document.onclick=reEnable
}
// prevent ctrl + s
$(document).bind('keydown', function(e) {
  if(e.ctrlKey && (e.which == 83)) {
    e.preventDefault();
    return false;
  }
});