HTML / Element / Initial coverage

<dialog>要素

状態: 初期Coverage 対象: HTML Living Standard 仕様確認日: 2026-09-18

Technical Summary

dialog要素は、利用者が作業または情報取得を行う一時的な小さなウィンドウを表します。show()は通常のdialog、showModal()はmodal dialogを表示します。

modalとして表示すると、dialogはtop layerに入り、Documentはそのmodal dialogによってblockされます。外側をinertとして扱うこと、初期フォーカスと閉じた後のフォーカスを確認することが重要です。

open属性を直接削除することは、close event、top layer、Documentのblock状態、フォーカス復元を正しく処理しない可能性があります。通常はclose()またはrequestClose()を使います。

Definition / Categories

項目仕様上の整理
意味作業または情報取得のための一時的なdialog box
CategoriesFlow content、Interactive content、Palpable content
ContextFlow contentが期待される場所
Content modelFlow content
Content attributesGlobal attributes、closedbyopen
DOM interfaceHTMLDialogElementopenreturnValueshow()showModal()close()requestClose()

open状態と表示メソッド

openはdialogがactiveで利用者と相互作用できることを表すboolean attributeです。ただし、openの有無だけでは、dialogがmodalかどうかは判定できません。

操作仕様上の境界
show()dialogを非modalで表示し、ページの他の部分も相互作用可能にする
showModal()dialogをtop layerに追加し、最上位のmodal dialogとして表示する
close(result)dialogを閉じ、指定されたresultをreturnValueへ反映し、close eventを発火する
requestClose(result)cancel eventを経由するclose requestを行い、キャンセルされなければ閉じる
const dialog = document.querySelector('#settings');

dialog.show();       // non-modal
dialog.close('done');

dialog.showModal();  // modal, top layer
dialog.requestClose('cancel');

Modal・top layer・inert

showModal()で表示されたdialogは、Documentのopen dialogs listに入り、modalとして扱われます。Documentはdialogによってblockされ、dialogの外側のfocused areaはinertになります。dialogはtop layerに置かれるため、通常の祖先要素のz-indexだけで表示順を理解することはできません。

背面に表示される領域は::backdropでスタイルを指定できます。ただし、暗い背景を描くだけではmodalの意味やキーボード操作は実装されません。表示方法、フォーカス、閉じる条件を一体として確認します。

<dialog id="confirm" aria-labelledby="confirm-title">
  <h2 id="confirm-title">削除を確認</h2>
  <p>この操作は取り消せません。</p>
  <form method="dialog">
    <button type="submit" value="cancel" autofocus>キャンセル</button>
    <button type="submit" value="delete">削除する</button>
  </form>
</dialog>

<style>
  #confirm::backdrop { background: rgb(0 0 0 / 0.45); }
</style>

Focus・close request・event

dialog focusing stepsは、autofocus、focus delegate、dialog自身の順に初期フォーカスの候補を探します。利用者が最初に操作する要素が明確なら、dialogの子孫へautofocusを指定して意図を明示します。modalを閉じると、以前にfocusされていた要素へ戻す処理が試みられます。

close()は直接閉じる処理です。requestClose()は、まずcancel eventを発火し、preventDefault()でキャンセルされなければclose処理へ進みます。Escapeキーや閉じる操作を、すべて同じclose requestとして扱う場合に境界を記録できます。

dialog.addEventListener('cancel', (event) => {
  if (mustConfirm) event.preventDefault();
});

dialog.addEventListener('close', () => {
  console.log(dialog.returnValue);
});

closedbyとlight dismiss

closedbyは、利用者のどの操作がdialogを閉じるかを指定するenumerated attributeです。

Close条件
anyclose requestに加え、dialogの外側のクリックでも閉じる
closerequestclose requestで閉じるが、外側のクリックでは閉じない
none利用者操作による自動closeを行わない
省略または不正値Auto。modalの表示方法などの条件からcomputed closed-by stateが決まる

この属性の実装状況や外側クリックの扱いは、ブラウザー・確認時点・表示方法に依存し得ます。仕様の値と、実際に観測したclose条件を混同しません。

Form method="dialog"returnValue

formのmethoddialog状態の場合、form submissionはネットワーク送信ではなく、formを含むdialogを閉じる処理になります。submitterが持つ値がdialogのreturnValueへ渡されます。

<dialog id="ship">
  <form method="dialog">
    <button type="submit" value="board">乗船する</button>
    <button type="submit" value="call">船長を呼ぶ</button>
  </form>
</dialog>

ship.addEventListener('close', () => {
  if (ship.returnValue === 'board') {
    // 選択に応じた処理
  }
});

DOM Interface

HTMLDialogElement.openopen属性をbooleanとして反映します。returnValueは直近のclose resultを返します。表示・終了の意味を、単なる属性の付け外しと同一視しないことが重要です。

const dialog = document.querySelector('#settings');

dialog.open;
dialog.returnValue;
dialog.show;
dialog.showModal;
dialog.close;
dialog.requestClose;

Fact / Evidence(主張 / 根拠)

dialogの意味、表示方法、modal状態、focus、close request、form境界を、適用条件・確認状態・根拠位置に分けて記録します。ブラウザーの実際の表示・focus・Accessibility Treeは下のImplementation Evidenceへ分離します。

主要Factと根拠位置
種別Fact / 主張条件・範囲状態根拠
SPECdialogは作業または情報取得のための一時的なdialog boxを表します。意味、categories、context、content model、利用境界。確認済みHTML Standard: dialog element
SPECshow()はnon-modal、showModal()はtop layerのmodal dialogとしてdialogを表示します。open、is modal、Documentのblock、top layer。確認済みHTML Standard: showing a dialog
SPECmodal dialogでは、Documentのfocused areaがinertになり、dialogはtop layerに置かれます。showModal()、backdrop、focus、modal blocking。確認済みHTML Standard: modal dialog steps
SPECrequestClose()cancel eventを経由し、キャンセルされなければclose処理を行います。cancelclose、return value、close request。確認済みHTML Standard: request to close
SPECmethod="dialog"のform submissionは、formを含むdialogを閉じ、submitterの値をresultとして扱います。formのmethod状態、submitter、dialogのreturnValue。確認済みHTML Standard: form control infrastructure
SPECclosedbyanycloserequestnoneのclose条件を表します。computed closed-by state、modal、light dismiss。確認済みHTML Standard: closedby

Evidence

  1. HTML Standard: The dialog element — 意味、categories、content model、open、closedby、focus、show、showModal、close、requestClose、top layer
  2. HTML Standard: Form control infrastructuremethod="dialog"、submitter、dialog close、return value
  3. HTML Accessibility API Mappings — dialogのrole、accessible name、stateとplatform API mappingの確認入口
  4. Web Platform Tests: the-dialog-element — dialog、modal、focus、close、toggleに関係するテスト群の入口

Implementation Evidence

仕様上の主張とは別に、ブラウザー実装・WPT・Accessibility Treeの観測を記録します。dialog-v1をChrome 153で実行し、IMPLとAccessibility Treeの部分観測結果を登録しました。未確認の項目を確認済みとは扱いません。

専用fixture: dialog-v1は、non-modal / modal表示、初期focus、focus復元、close request、method="dialog"closedbyreturnValueを再現するfixtureです。fixture本体はリポジトリのdocs/atlas/dialog-v1-fixture.htmldialog-v1-check.js、実行記録はdocs/atlas/dialog-v1-results-2026-09-19.mdに登録しています。

dialog要素の実装Evidence登録表
種別再現確認の範囲記録する条件状態
IMPLshow() / showModal()、open、:modalclosedby、focus、close、returnValue2026-09-19 / Chrome 153.0.0.0 / Windows NT 10.0でdialog-v1を実行。modalとnon-modalの表示、初期focus、requestClose()method="dialog"cancel / close、focus復元、return valueを確認。backdrop、Escape、外側クリック、Firefox・Safariは未実施部分観測(Chrome 153 / 9項目pass)
WPTdialog、modal、focus、close request、method=dialog、closedby、toggleの個別テストthe-dialog-element配下の選定ファイルを実行し、browser・実行日・pass/fail・未実行理由を記録する未実施
AAMdialogのrole、accessible name、modal時のtree、背景のinert、focus移動2026-09-19 / Chrome 153.0.0.0 / Windows NT 10.0のAccessibility Treeで、名前付きmodal Confirm the actionとnon-modal Non-modal dialog、見出し・ボタン・初期focusを確認。支援技術、platform API、他ブラウザー、unnamed dialogは未実施部分観測(Chrome 153)

dialogの表示位置、backdrop、Escape、外側クリック、focus、Accessibility Treeの公開はuser agent・OS・属性値・表示方法に依存し得ます。1環境の観測を、すべてのブラウザーに共通する結果として登録しません。

Coverage / Open Issues

  • 確認済み意味、Categories、Context、Content model、content attributes、DOM interface
  • 確認済みshow() / showModal()、modal blocking、top layer、focus、close request、method="dialog"の仕様上の入口
  • 確認済みclosedbyの値、computed closed-by state、light dismissの仕様上の境界
  • 部分確認Chrome 153 / Windows NT 10.0でdialog-v1の9項目、名前付きmodal / non-modalのAccessibility Treeと初期focusを確認
  • 未完了Firefox・Safariを含むfocus、Escape、backdrop、外側クリック、close event、focus復元の比較
  • 未完了closedby、command / commandfor、nested dialog、popoverとの相互作用、実装時期と互換性
  • 未完了WPTの個別実行結果、HTML-AAMの全mapping、支援技術別の観測

このページは初期Coverageです。仕様上の処理モデルを整理したものであり、すべてのブラウザーで同じ表示・focus・close条件・アクセシビリティAPI結果になること、またdialog要素全体の検証が完了したことを主張しません。

Related surface

初心者向けのdialogの使い方、モーダル、フォーカス、method="dialog"Yugienのdialog要素ページを参照してください。開く操作はbutton要素、追加情報の開閉との境界はdetails要素、フォーム送信の共通処理はform要素でも確認できます。