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

时间:2014-02-09 12:05:52

标签: jquery macos google-chrome keyboard-shortcuts keypress

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

我想在Mac上捕获键盘命令 Ctrl + S Command + 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;
});

本规范适用于:

  • Safari:使用 Ctrl + S 命令 + S
  • Firefox:使用 Ctrl + S 命令 + S
  • Chrome: Ctrl + S 正常工作

您会看到问题是谷歌浏览器,在这里我只能捕获 Ctrl + S

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

1 个答案:

答案 0 :(得分:11)

此代码适用于我。我在Chrome(v33)Firefox(v24)和Safari(v6.1.1)中进行了测试。 Control + S Command + 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;
        };
    }
);

请注意,我使用的是keydown,而不是keypress。在jQuery docs中他们说:

  

注意:由于任何官员都不承担按键事件   规范,使用它时遇到的实际行为可能   不同浏览器,浏览器版本和平台。

我会避免使用它。