target="_package"

調べる過程で、もう1つ気付いたのは_packageというフレーム名である。

<a target="_package" href="http://www.example.com/">

前と同じウィンドウにURLが開くようになるというやつだ。実際に試してみるとFirefoxでもIE8でも確かにそうなる。

HTML 4.01の仕様書原文)には記述がないので、ブラウザの独自仕様なんだろうか。

色々試してみると、_package以外の文字列を指定しても挙動が同じになることに気付く。

<a target="abc" href="http://www.yahoo.co.jp/">Yahoo!</a>
<a target="abc" href="http://www.google.co.jp/">Google</a>

さらにあちこちひっくり返してみると、Frameの所に記述があった。

4. 未知のフレームFを参照するtarget属性があった場合、ユーザエージェントは新規ウインドウとフレームを生成し、当該要素が指し示すリソースをその新規フレームに読み込まねばならない。

http://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/present/frames.html#h-16.3.2

4. If any target attribute refers to an unknown frame F, the user agent should create a new window and frame, assign the name F to the frame, and load the resource designated by the element in the new frame.

http://www.w3.org/TR/html4/present/frames.html#h-16.3.2

要するに、未知のフレームへの参照を見つけたら、その名前を持つフレームを新しく作れ、ということだ*1

フレーム名はアルファベットで始めろ原文)とも書いてあるので、_packageではなくpackageと指定した方が無難かもしれない。

*1:日本語訳の方は assign the name F to the frame に相当する部分がない。原文に後から加わったものか?