Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2022年3月以降、すべてのブラウザーで利用可能です。
* この機能の一部は、対応レベルが異なる場合があります。
HTMLDialogElement インターフェイスは <dialog> 要素を操作するメソッドを提供します。 HTMLElement インターフェイスからプロパティとメソッドを継承しています。
EventTarget Node Element HTMLElement HTMLDialogElement親インターフェイスである HTMLElement から継承したプロパティもあります。
HTMLDialogElement.closedBy<dialog> 要素の closedby 属性の値を設定または返す文字列。この属性は、ダイアログを閉じるために使用できるユーザー操作の種類を示します。
HTMLDialogElement.open論理値で、ダイアログが操作可能であることを示す open 属性の値を反映します。
HTMLDialogElement.returnValue文字列で、ダイアログの返値を設定または返却します。
親インターフェイスである HTMLElement から継承したメソッドもあります。
HTMLDialogElement.close()ダイアログを閉じます。任意で引数として文字列を渡すことができ、これがダイアログの returnValue を更新します。
HTMLDialogElement.requestClose()ダイアログを閉じるリクエストをします。オプションの文字列引数を渡すことで、ダイアログの returnValue を更新することができます。
HTMLDialogElement.show()ダイアログをモードレスで開きます。すなわち、その間にダイアログの外のコンテンツが操作できます。
HTMLDialogElement.showModal()ダイアログをモーダルで、他のダイアログがあればその最も上に表示します。ダイアログの外の操作はブロックされます。ダイアログの外はすべて inert となり、ダイアログの外の操作はブロックされます。
親インターフェイスである HTMLElement から継承したイベントがあります。
これらのイベントを addEventListener() を使用して、またはこのインターフェイスの onイベント名 プロパティにイベントリスナーを代入することによって待ち受けます。
cancelダイアログを閉じるリクエスト(エスケープキーや HTMLDialogElement.requestClose() メソッドなど)が行われた際に発行されます。
closeエスケープキー、HTMLDialogElement.close() メソッド、または method="dialog" でダイアログ内のフォームを送信することによって、このダイアログが閉じられたときに発行されます。
以下の例はボタンを表示し、クリックすると、 HTMLDialogElement.showModal() 関数を使用してフォームの入ったモーダルダイアログ (<dialog>) を開きます。
開いている間、モーダルダイアログのコンテンツ以外はすべて不活性になります。 そこから[キャンセル]ボタンを押して(HTMLDialogElement.close() 関数で)ダイアログを閉じるか、[確認]ボタンでフォームを送信するかします。
この例は、ダイアログ上で発生可能なすべての「状態変更」イベント、cancel と close、および継承されたイベント beforetoggle と toggle の使用方法を示しています。
コードはまず、<button> 要素、<dialog> 要素、<select> 要素のオブジェクトを取得します。 次に、[更新]ボタンがクリックされたときに HTMLDialogElement.showModal() 関数を呼び出すリスナーを追加します。
次に、[確認]ボタンと[キャンセル]ボタンの click イベントにリスナーを追加します。 ハンドラーは、選択値(存在する場合)と値なしの状態で HTMLDialogElement.close() を呼び出します。これにより、ダイアログの返値 (HTMLDialogElement.returnValue) がそれぞれ選択値と null に設定されます。
close() を呼び出しすと、 close イベントも発生します。下記でダイアログの返値をログ出力することでこれを実装します。 [確認]ボタンがクリックされた場合、このこれはダイアログで選択された値であるべきです。そうでない場合は null であるべきです。
cancel イベントは、Esc キーなど「プラットフォーム特定の方法」が使用されてダイアログが閉じられる際に発行されます。 HTMLDialogElement.requestClose() メソッドが呼び出された場合にも発生します。 このイベントは「キャンセル可能」です。つまり、ダイアログが閉じるのを阻止するために使用できます。 ここではキャンセル操作を「閉じる」操作として扱い、設定された可能性のある値をクリアするために HTMLDialogElement.returnValue を "" にリセットします。
toggleイベント(HTMLElement から継承)は、ダイアログが開かれるか閉じられた直後(ただし close イベントの前)に発生します。
ここでは、ダイアログが開くためのリスナーと閉じられたときのログ出力するリスナーを追加します。
メモ: toggle および beforetoggle イベントは、すべてのブラウザーでダイアログ要素に対して発行されるとは限りません。 対応していないバージョンのブラウザーでは、代わりにダイアログを開いた/閉じた後、HTMLDialogElement.open プロパティを調べることで確認できます。
beforetoggleイベント(HTMLElementから継承)は、ダイアログが開く直前または閉じる直前に発行される、キャンセル可能なイベントです。 必要があれば、この要素はダイアログの表示を阻止するために使用できますし、ダイアログの開閉状態に影響を受ける他の要素に対して措置を実行するために使用できます。例えば、アニメーションを起動するためにそれらの要素にクラスを追加するといった操作が可能です。
この場合、単に古い状態と新しい状態をログ出力します。
下の例を試してみてください。 確認 ボタンと キャンセル ボタンの両方で close イベントを発生することに注意してください。また、結果は選択されたダイアログオプションを反映するはずです。
| HTML # htmldialogelement |
| HTML # event-beforetoggle |
| HTML # event-toggle |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。