要約

  • W3C の2013年 HTML 5.1 草案は dialog と showModal()、ダイアログの積み重ね、最上位の表示、文書の操作停止、autofocus、終了時の戻り値を記した。同日の操作に関する章は、モーダルの外側を操作できない状態にする。
  • 2014年の HTML5 勧告候補と2017年の HTML 5.2 勧告は、この役割分担を引き継いだ。現行の HTML 標準は、フォーカスと閉じる手順をさらに詳しく定める。

小窓を描くのは簡単だ。白い四角を置き、後ろを暗くし、赤い「削除」と地味な「戻る」を並べる。だが「いま答えるべき問い」を本当に一つにするには、見た目だけでは足りない。キーボードの行き先、読み上げられる操作、背後のボタンが押せるかどうかまで揃って初めて、読者は同じ会話に入る。絵だけ豪華な小窓は、舞台の袖から別の役者が飛び込んでくる芝居に似ている。

2013年5月28日の HTML 5.1 草案は、dialog を利用者が課題を行うための領域として扱った。show() は通常の対話を開く。showModal() はそれを文書のダイアログの積み重ねに入れ、最上位の層に置き、文書の操作を止める。ブラウザーが担当するのは窓の装飾ではなく、いまどの会話に順番が回っているかという交通整理だった。

同じ草案の利用者操作の章は、止められた文書の外側を操作不能にする。背景を暗くした理由と、背景に手が届かない理由が一致する。サイトは何を尋ね、どのボタンを見せるかを決める。ブラウザーはその間、別の操作が割り込まないようにする。各サイトが独自の鍵をこしらえるより、共通の門番に鍵の掛け方を任せる設計である。

入室だけでなく退室も仕事になる。2013年の文書には autofocus を使った最初の焦点、最上位の窓への取消要求、close() と returnValue がある。記事一覧を消すかどうか尋ねる場合、ブラウザーが窓を閉じて返事を渡し、サイトがその返事を処理する。「やめる」を選んだのに一覧が消えるなら、門番より受付の判断が怪しい。

2014年2月の HTML5 勧告候補にも、積み重ね、最上位の層、取消と終了の処理がある。2017年12月の HTML 5.2 勧告は、焦点の移し方をさらに記した。これは仕様書の歩みを示す日付で、あらゆるブラウザーの完成日を一括して示すものではない。それでも「小窓の外をいつ待たせるか」をブラウザーが考える設計の筋道は明瞭だ。

show() と showModal() を取り違えると、礼儀が変わる。本文を読みながら開いておく補助パネルは、ほかの操作と共存できる。削除の確認は、その瞬間だけ返事を求める。どちらも同じ四角い窓で描けるが、読者への頼み方が違う。画面に置けるからといって、何度でも話を遮ってよいわけではない。

現行 HTML 標準は初期フォーカス、終了要求、戻り値を細かく整理し、後年の requestClose() や closedby も備える。新しい機能を2013年の草案にさかのぼって書き込む必要はない。長い経緯から見える問いは一つだ。ウェブページが人を呼び止めた時、入口を守るのは誰で、用事が済んだ人をどこへ返すのか。

優秀な門番は、会話が終われば道を空ける。画面の主役は小窓ではなく、その向こうで読まれていた記事に戻る。