このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

呼び出しコマンド API

Baseline 2025
Newly available

Since December 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

呼び出しコマンド API は、ボタンに動作を宣言的に割り当てる方法を提供し、ボタンが操作されたとき(クリックまたはスペースバーやリターンキーなどのキー操作による呼び出し)にインタラクティブな要素を制御できるようにします。

概念と使い方

ウェブでは、<button> 要素がページの様々な側面を制御するパターンがよく見られます。例えば、ポップオーバー<dialog> 要素の開閉、テキストの書式設定などです。

従来、この種の制御を実装するには、ボタンに JavaScript のイベントリスナーを追加し、制御対象の要素に対して API を呼び出す必要がありました。 commandForElement および command プロパティは、限定された種類のアクションに対して、宣言的にこれを実現する手段を提供します。これにより、組み込みコマンドでは、ユーザーが JavaScript のダウンロードや実行を待たずにボタンをインタラクティブに操作できる利点があります。

HTML 属性

commandfor

<button> 要素をボタンに変換し、指定されたインタラクティブ要素を制御します。制御対象要素のIDを値として受け取ります。

command

commandfor 属性で指定された、<button> コントロールによって制御される要素に対して実行されるアクションを指定します。

インターフェイス

CommandEvent

コマンドが発行されたことをユーザーに通知するイベントを表します。これは command イベントのイベントオブジェクトです。このイベントは commandForElement で参照される要素上で発生します。

他のインターフェイスの拡張

インスタンスプロパティ

HTMLButtonElement.commandForElement

ボタンを通じて制御する要素を取得または設定します。JavaScript において HTML の commandfor 属性に対応するものです。

HTMLButtonElement.command

ボタンによって制御されている要素に対して実行されるアクションを取得および設定します。 HTML の command 属性の値を反映します。

イベント

command イベント

ボタンが参照している要素で発生します。

宣言的なポップオーバーの作成

html
<button commandfor="mypopover" command="toggle-popover">
  ポップオーバーを切り替え
</button>
<div id="mypopover" popover>
  <button commandfor="mypopover" command="hide-popover">閉じる</button>
  ポップオーバーのコンテンツ
</div>

宣言的なダイアログの作成

html
<button commandfor="mydialog" command="show-modal">モーダルダイアログを表示</button>
<dialog id="mydialog">
  <button commandfor="mydialog" command="close">閉じる</button>
  ダイアログのコンテンツ
</dialog>

独自のコマンドの作成

html
<button commandfor="my-img" command="--rotate-left">左に回転</button>
<button commandfor="my-img" command="--rotate-right">右に回転</button>
<img id="my-img" src="photo.jpg" alt="[ここに適切な代替テキストを追加]" />
js
const myImg = document.getElementById("my-img");

myImg.addEventListener("command", (event) => {
  if (event.command === "--rotate-left") {
    myImg.style.rotate = "-90deg";
  } else if (event.command === "--rotate-right") {
    myImg.style.rotate = "90deg";
  }
});

仕様書

Specification
HTML
# commandevent
HTML
# dom-button-commandforelement
HTML
# dom-button-command

ブラウザーの互換性

api.CommandEvent

api.HTMLButtonElement.commandForElement

api.HTMLButtonElement.command

関連情報