2

いくつかのキーボード ショートカットを追加する Safari 6 拡張機能を作成しています。私がやりたいことの 1 つは、ユーザーが ⌘+1 ⌘+2 などを押したときにキャッチすることです。現在、これが発生したときに Safari はイベントを発生させないようです。コードを表示するための Fiddle: 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 に答える