18

JavaScriptEventオブジェクトには、修飾キーが押されているかどうかを確認するブール値がいくつかあります。

  • ctrlKey:CTRLキー。
  • altKey:ALTキー。
  • altLeft:ALT左キー。IEのみ。
  • altGraphKey:ALTGRキー。Chrome/Safari のみ。

ただし、いくつかの問題があります。

  • ALTGR 修飾子を押すと、 IE と Chromeがおよびに設定ctrlKeyされます。truealtKeytrue
  • ALTGR 修飾子を押すと、ALT だけが押されているため、 Firefox はctrlKeytofalsealtKeyto を設定します。true
  • Chrome にはaltGraphKeyプロパティがありますが、常にundefinedです。

ALT質問: +CTRLALTGRキーの違いをどのように区別できますか? 特にクローム。

4

4 に答える 4

12

Webkit ブラウザーの altGraphKey は (2013 年 9 月時点で) 存在しないように見え、Firefox の動作が変更されました。AltGr現在、キーのブラウザの動作は次のようになっています。

  • Webkit (Chrome) - ctrlKey: true、altKey: true
  • IE 8 - ctrlKey: false、altKey: true
  • IE 10 - ctrlKey: true、altKey: true
  • Mozilla (Firefox) - ctrlKey: true、altKey: true

つまり、それらはすべて現在一貫性があります (一貫して一貫性のない IE8 を除いて)。

次のスニペットは、最新のブラウザーでキャッチする必要がありますが、 orはキャッチしAlt Grません。ただし、IE8 には特別なケースが必要です。AltCtrl

if (event.ctrlKey && event.altKey) {
    // Appears to be Alt Gr
}
于 2013-09-02T09:43:32.330 に答える
4

免責事項: 私はこのキーを備えたキーボードを持っていないので、自分でテストすることはできませんが、仕様ではkeyプロパティを使用できると書かれています。これは、それを実装するブラウザーのみをサポートする必要がある場合に適したソリューションです (執筆時点では、Safari のみがサポートしていません)。値が であるかどうかを確認できます"AltGraph"

window.onkeydown = function (e) {
  if (e.key === 'AltGraph') {
    console.log(e.key);
  }
};

于 2016-09-09T13:29:28.787 に答える
1

ALTGRキーとCTRL+ALTキーの組み合わせは同じもので、Javascript で違いを生む方法はないと思います。ALTGR+eCTRL+ ALT+を押すとe、キーボード/言語設定で両方とも € (ユーロ) 記号が生成されます。キーコードを確認するためのページがオンラインにあります。お役に立てれば。

于 2012-10-28T10:31:22.233 に答える