web-dev-qa-db-ja.com

Ctrl + S preventDefault in Chrome

キャッチしたい Ctrl+S Chromeで、デフォルトのブラウザの動作を防止してページを保存します。どうやって?

(質問と回答を投稿するだけで、この後かなり長い間、解決策が見つかりませんでした)

36
zupa

私が見る限り、秘密のソースは、 Ctrl+S keypressイベントは発生せず、keydownイベントのみが発生します。

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は言う

入力要素の内部にいる場合、ホットキーは追跡されません(明示的にホットキーを入力に直接バインドしない限り)。これにより、通常のユーザー入力との競合を回避できます。

50
zupa

ブラウザのcontrol + s(機能の保存)のオーバーライド からの「借用」

document.addEventListener("keydown", function(e) {
  if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
    e.preventDefault();
    alert('captured');
  }
}, false);
14
BumbleB2na
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;
        }
    }
};
   
3
Latha