19

MouseEvent.metaKey動作しないようです。FireFox と Chrome の両方で、キーを押しながらクリックfalseしても返されます。Win

<!doctype html>
<button onclick=alert(event.metaKey)>click while holding "meta key"</button>

MDNの状態:

イベントが発生したときにキーが押されたか ( ) 、押されなかったか ( )を示す をMouseEvent.metaKey返す読み取り専用プロパティ。BooleanMetatruefalse

注: Macintosh キーボードでは、これはコマンド キー (⌘</kbd>). On Windows keyboards, this is the windows key (⊞</kbd>).

ブラウザの互換性

ここに画像の説明を入力

MDN クレームMouseEvent.metaKeyは FireFox と Chrome でサポートされていますが、機能していません。

どのキー MouseEvent.metaKey を指していますか?

上記のコードが機能しないのはなぜですか?

4

3 に答える 3

11

MouseEventmetaKeyプロパティを にするために、Windows システムでどのキーを押さなければならないかを尋ねている場合true、答えはブラウザに依存するということです。また、一部の Windows ブラウザーは単純にそれをサポートしておらず、常にfalseorを返しundefinedます。

QuirksMode.orgmetaKeyには非常に古いものがありますが、ブラウザ サポートの最新のチャートは見つかりませんでした。

jQuery を使用している場合は、ブラウザー間の互換性のために正規化されるmetaKeyイベント プロパティの 1 つです。

Web サイトの一部の機能にキー + マウス イベントを実装する必要がある場合は、Shiftすべてのシステムで機能するようにキーを使用します。(複数のキー オプションが必要な場合は、設計を再考することをお勧めします。)

于 2011-06-06T00:23:10.983 に答える
4

実証テストでは、次の結果が示されています。jQuery が ^F の正規化をうまく行っていないわけではありません。

Mac では、Safari バージョン 5.1.7 および 6.0 で。

 F   Keypress: 102, 102  
⌘F   Keypress: 102, 102  meta 
⌥F   Keypress: 402, 402  alt 
⌃F   Keypress: 6, 6  ctrl
⇧F   Keypress: 70, 70  shift 

Mac の Firefox 15.0.1:

 F   Keypress: 102, 0
⌘F   Keypress: 102, 0 meta 
⌥F   Keypress: 402, 0 alt
⌃F   Keypress: 102, 0 ctrl
⇧F   Keypress: 70, 0 shift

Mac では、Google Chrome 18.0.1024.168 で:

 F   Keypress: 102, 102
⌘F   (No triggers sent for ⌘ + key)
⌥F   Keypress: 402, 402 alt
⌃F   Keypress: 6, 6 ctrl
⇧F   Keypress: 70, 70 shift

テストコード: // jquery-1.7.2

  $(document.defaultView).keypress(function(e) {
      console.log("Keypress: " + e.which + ", " + e.keyCode, " "
          + (e.metaKey ? "meta " : "")
          + (e.ctrlKey ? "ctrl " : "")
          + (e.altKey ? "alt " : "")
          + (e.shiftKey ? "shift " : ""));
  });
于 2012-10-09T13:26:06.310 に答える