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 に相当する部分がない。原文に後から加わったものか?