【问题标题】:jQuery capture CTRL + S and Command + S (Mac)jQuery 捕获 CTRL + S 和 Command + S (Mac)
【发布时间】:2014-03-06 16:47:16
【问题描述】:

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

我想在 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;
});

此代码适用于:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    此代码对我有用。我在 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;
            };
        }
    );
    

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

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

    我会避免使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2017-12-27
      相关资源
      最近更新 更多