gorogoronyan FC2

HTML: dialog タグ

概略

dialog タグ は単純なポップアップの表示だけでなく、 モーダルなダイアログの表示も行えるタグです。 IE や少し古い Web ブラウザでは使用できないタグでしたが 現在では使用できます。 最近使えるようになったタグです。

・ブラウザの対応時期
  Firefox  98以降 (2022年春)
  Safari 15.4以降 (2022年春)
  Edge     79以降 (2020年頭, Chromium Edge以降)

dialog タグでは display: block, none の処理を使いません

dialog タグには open 属性 や JavaScript の show()showModal()close() があり、 こちらで表示・非表示を制御します。

モーダルダイアログとモードレスダイアログ

ダイアログの表示には 1) モーダル と 2) モードレス の 2種類の表示方法があります。

モーダルダイアログでは ダイアログ以外のページ本体のボタンやリンクの操作ができない状態になります。 アプリケーションの画面で多用するダイアログです。 アプリケーションではダイアログを表示中に 背後の他のボタンを操作してほしくない (動作に混乱が生じる) 話が多いので、 このような場面でモーダルダイアログを使用します。

モードレスダイアログの場合は ダイアログ以外の他のボタンやリンクも操作できます。

showModal()   モーダルのダイアログを表示する。
show()        モードレスのダイアログを表示する。

サンプル

TestJS_dialog_form_button01.html
モーダルダイアログとモードレスダイアログのサンプル。
HTML: form タグ
TestJS_dialog_form_button02.html
ダイアログで押したボタンの値を受け取るサンプル。 close イベントと dialog.returnValue のサンプル。

モーダルダイアログを表示する

TestJS_dialog_form_textarea01.html
dialog タグでポップアップウインドを表示する。
TestJS_dialog_form_img01.html
img 画像をウインドの中央に表示する。
img タグ: JavaScript サンプル

Promise と async/await で処理する

サンプル TestJS_dialog_form_button02.html では 1) ダイアログを開く処理と 2) ダイアログを閉じて選択したボタンの値を受け取った後の処理が 別々に分かれています。

モーダルダイアログを下のような書き方で 1つにまとめて処理したい場合もあります。 openModalDialog() は Promiseasync/await を使った処理になります。

//ダイアログを開く。
//ダイアログを閉じるまで待機する (await)。
//押したボタンの値を返して result にセットする。
const result = await openModalDialog();

//ここからはダイアログを閉じた後の処理になる。

//result を見て次の処理を行う。
if (result == "value1"){
	...
}
else if ...

関連

inserted by FC2 system