要約

  • かつてtarget="_blank"のリンクは、新しいページに元のタブへのopener関係を渡すのが普通だった。
  • 2018年の提案と2019年のHTML改訂でnoopenerが既定となり、関係を保つ場合はrel="opener"を明記する。

リンクを押すと新しいタブが現れ、元のページは背後に残る。別々の部屋を行き来している気分になる。以前のブラウザーは、新しいページへwindow.openerという取っ手も渡していた。その取っ手を持つページは、元のタブを別の場所へ移動させられた。画面には二つの四角が離れて見えるのに、裏では細いひもがつながっていた。

2018年10月10日に始まったWHATWGの議論で、Chris Dumezは当時の既定値を指摘した。target="_blank"には通常openerが付き、作者がrel="noopener"を書くと切れる。そこで順番を入れ替えようと提案した。ふつうの新規タブは切り離し、二つの窓を協調させるサイトだけがrel="opener"を明記する。協働のための便利な取っ手が、単なる外部リンクにも付いていたのである。

翌日のWebKitの記録は、その変更を試す作業を示す。_blankのリンクをnoopener付きとして扱い、必要ならopenerで関係を求める。読者には同じ新規タブが見える。変わるのは画面に描かれない接続だ。編集者が一つ一つの出口で保護用の単語を思い出す必要も減る。

2019年2月7日に統合されたHTMLの変更が、その考えを標準にした。現在のリンク処理はnoopenerやnoreferrerがあれば接続を切り、_blankでもopenerがなければ同じ結果にする。rel="opener"は接続を残す意思表示だ。新しいタブを作るという見た目はそのまま、元のタブへ手を伸ばす権限だけが既定から外れた。

規格の変更は、目に見える画面を塗り替えるとは限らない。以前はリンクの作者が「切る」という印を毎回付けた。今はブラウザーが先にひもを外し、必要な作者が「つなぐ」と書く。協調する二つの窓には道が残る。記事を読むために開いた一枚には、元のページの取っ手まで付けなくてよい。

「新しいタブ」は表示形式の名前であり、権限図ではない。二つのページが別々に見えても、どちらがどちらを動かせるかは別の規則で決まる。2018年の問題提起、WebKitの試み、2019年の編集は、その見えない線を既定から外した。インターネットの歴史には、新しい扉を作る話だけでなく、余計なひもをほどく話もある。