Element: auxclick イベント

auxclick イベントは、ポインティングデバイスの第 1 ボタン以外のボタン (マウスの第 1 の—通常は左端の—ボタン) が同じ要素 (Element) 内で押されて離されたとき、その要素で発行されます。

auxclick は、mousedown および mouseup イベントが発生した後に、順に発生します。

バブリング あり
キャンセル
インターフェイス MouseEvent
イベントハンドラープロパティ onauxclick (en-US)

既定のアクションの抑止

Firefox を含む大多数のブラウザーでは、中央クリックを新しいタブでリンクを開く機能にマッピングしていますが、preventDefault()auxclick イベントハンドラー内で呼び出すことで、この動作を取り消すことができます。

入力やナビゲーションに対応していない要素で発生した auxclick イベントを待ち受ける場合、マウスの中ボタンのダウンアクションにマッピングされた他の既定のアクションを明示的に防止したい場合がよくあります。Windows では自動スクロール、macOS や Linux ではクリップボードの貼り付けなどがこれにあたります。これは、mousedown イベントや pointerdown イベントの既定の動作を防ぐことで実現できます。

さらに、右クリックの後にシステムコンテキストメニューを開かなくする必要がある場合もあります。オペレーティングシステムのタイミングの違いにより、これも auxclick の既定のの動作では防ぐことができません。代わりに、contextmenu イベントの既定の動作を防止することで実現できます。

この例では、 onclickonauxclick (en-US) という 2 つのイベントハンドラーの関数を定義しています。前者はボタンの背景色を変更し、後者はボタンの前景 (テキスト) の色を変更します。また、このデモを多ボタンマウスで試すことで、2 つの関数が動作する様子を見ることができます (GitHubでライブで見ることができ、ソースコードを見ることもできます)。

JavaScript

let button = document.querySelector('button');
let html = document.querySelector('html');

function random(number) {
  return Math.floor(Math.random() * number);
}

function randomColor() {
    return `rgb(${random(255)}, ${random(255)}, ${random(255)})`;
}

button.onclick = function() {
  button.style.backgroundColor = randomColor();
};

button.onauxclick = function(e) {
  e.preventDefault();
  button.style.color = randomColor();
}

button.oncontextmenu = function(e) {
  e.preventDefault();
}

auxclick イベントを onauxclick (en-US) でキャプチャするだけでなく、 contextmenu イベントもキャプチャし、そのイベントで preventDefault() を呼び出して、色の変更が適用された後にコンテキストメニューがポップアップするのを防いでいることに注目してください。

HTML

<button><h1>Click me!</h1></button>

メモ: 3 ボタンマウスを使用している場合、左以外のボタンがクリックされると、onauxclick ハンドラーが実行されることがわかります (通常、ゲーミングマウスの「特殊」ボタンも含みます)。

仕様書

Specification
UI Events
# event-type-auxclick
HTML Standard
# handler-onauxclick

ブラウザーの互換性

BCD tables only load in the browser

関連情報