jQuery捕获CTRL + S和Command + S(Mac)

Pas*_*rat 4 macos jquery google-chrome keyboard-shortcuts keypress

我知道这个问题在stackoverflow上被问到serval时间,我尝试了一些不同的解决方案,但是找不到适合我的代码.

我想在Mac上捕获键盘命令Ctrl+ SCommand+ S,目前我使用此代码(使用jQuery 2.1.0):

jQuery(window).on('keypress', function(event){
    if (!(event.which == 115 && (event.ctrlKey||event.metaKey)) && !(event.which == 19)) return true;

    // my save function

    event.preventDefault();
    return false;
});
Run Code Online (Sandbox Code Playgroud)

本规范适用于:

  • Safari:使用Ctrl+ SCommand+S
  • Firefox:用Ctrl+ SCommand+S
  • Chrome:只有 Ctrl + S有效

你会发现问题是谷歌Chrome,这里我只能捕获Ctrl+ S.

有谁知道如何解决这个问题?

ben*_*ick 11

这段代码适合我.我在Chrome(v33)Firefox(v24)和Safari(v6.1.1)中进行了测试.无论Control+ SCommand+ S工作.

$(document).keydown(function(event) {
        // If Control or Command key is pressed and the S key is pressed
        // run save function. 83 is the key code for S.
        if((event.ctrlKey || event.metaKey) && event.which == 83) {
            // Save Function
            event.preventDefault();
            return false;
        };
    }
);
Run Code Online (Sandbox Code Playgroud)

请注意我正在使用keydown而不是keypress.在jQuery 文档中,他们说:

注意:由于任何官方规范都没有涵盖按键事件,因此使用它时遇到的实际行为可能因浏览器,浏览器版本和平台而异.

我会避免使用它.