2

我正在编写一个 Safari 6 扩展,它添加了一些键盘快捷键。我想做的一件事是在用户按下 ⌘+1 ⌘+2 等时进行捕捉。现在,Safari 似乎不会在发生这种情况时触发任何事件。这是一个小提琴: http: //jsfiddle.net/Xe9YQ/来显示代码,这里是 JS:

$( 'body' ).bind( 'keypress', function ( event ) {

  var modifier = '';
  if ( event.metaKey ) {
    modifier += 'cmd-';
  }
  if ( event.ctrlKey ) {
    modifier += 'ctrl-';
  }
  if ( event.altKey ) {
    modifier += 'alt-';
  }
  if ( event.shiftKey ) {
    modifier += 'shift-';
  }

  $( 'body' ).html( modifier + event.keyCode );
});

如果您尝试“⌘+j”、“⌘+t”,甚至“⌘+0”和“⌘+shift+5”,您将看到正确的输出。由此看来,这似乎不是覆盖浏览器快捷方式的问题,也不是使用数字行的问题。

有人熟悉这个问题吗?这是一个已知的错误?我会很感激任何建议。

4

1 回答 1

1

您必须将keydown事件与 结合使用preventDefault(),因为⌘</kbd> combinations may have bindings already (in Chrome, for example ⌘</kbd> + 1 switches to the first tab).

$( 'body' ).bind( 'keydown', function ( event ) {
    var modifier = '';
    if ( event.metaKey ) {
      event.preventDefault();
      modifier += 'cmd-';
    }
    if ( event.ctrlKey ) {
      modifier += 'ctrl-';
    }
    if ( event.altKey ) {
      modifier += 'alt-';
    }
    if ( event.shiftKey ) {
      modifier += 'shift-';
    }
    $( 'body' ).html( modifier + event.keyCode );
});
于 2013-01-18T16:10:06.677 回答