[1] [[HTML 4]] などの [[DTD]] において、 [CODE(HTML)[%FrameTarget;]] は対象フレーム名を表します。 [[a]] 要素などの [[target]] 属性の値が [CODE(HTML)[%FrameTarget;]] として定義されています。また、 [[frame]] 要素や [[iframe]] 要素の [[name]] 属性の値も、 (DTD 上は直接 [[CDATA]] になっていますが) [CODE(HTML)[%FrameTarget;]] と考えて良いでしょう。 [[#comment]] * フレーム名 [2] DTD においては細かい制限を記述できないため、 [CODE(HTML)[%FrameTarget;]] は [CODE(SGML)[CDATA]] として定義されていますが、実際にはその構文には緩やかな制限があります。 [5] HTML 4 (>>3) によれば、 - frame-target = ALPHA CDATA / special-frame-target です。なお、大文字・小文字は区別されません。 [6] HTML 4 に従うなら、この構文に合致しない名前は無視します (should)。 実際の [[UA]] の挙動は、どんな名前でも受け入れるようです。 漢字や仮名を使ったフレーム名の HTML 文書も実在していたりします。 [[a]] 要素の [[name]] 属性同様, なんでもありの世界と考えた方が良いでしょう。 [9] フレーム名は [[HTTP]] [[頭欄]] [[Window-Target]] の値でもありますから、 HTTP で安全に転送できる ASCII の94個の図形文字の範囲内にした方が良いでしょう。 [11] >>5 Netscape の元の仕様 (>>10) では、最初の文字に数字も許しています。 - [10] [NETSCAPE] ''How to target a link to a window'' - [3] [HTML4] ''Basic HTML data types: Frame target names'' - [4] ''Frames in HTML documents: Specifying target frame information'' - [14] ''Common Markup for micropayment per-fee-links: a W3C Public Working Draft'' : HTML 4 と同じように定義された [CODE[[[target]]]] 引数が存在します。既定値は [CODE[_self]] です。 [19] ''WebCGM Intelligent Content: 3.1.2.2 Picture Behaviors'' [[WebCGM]] は HTML 4 の予約名に加えて [CODE[_replace]] (埋込み CGM 画像内のリンクをたどった時、その画像を置き換える) を定義しています。 ([[名無しさん]]) [[#comment]] ** 特殊フレーム名 [22] ,_blank ,新しい無名の窓で文書を読み込む ,"[NETSCAPE], [HTML4]" ,_content ,主窓で読み込む >>8 ,[MOZILLA] ,_main ,主窓で読み込む >>8 ,[WINIE] ,[[_search]] ,検索 frame ,[MOZILLA] ,_self ,同じフレームで読み込む ,"[NETSCAPE], [HTML4]" ,_parent ,現在のフレームのすぐ親で読み込む >>7 ,"[NETSCAPE], [HTML4]" ,_top ,窓全体で読み込む (全フレームを取消す) >>7 ,"[NETSCAPE], [HTML4]" [7] [CODE(HTML)[_parent]] と [CODE(HTML)[_top]] は「親」が存在しなければ [CODE(HTML)[_self]] と同じ意味になります。 HTML 4 は [CODE(HTML)[_parent]] は親 [[frameset]] としていますが、 [CODE(HTML)[IFRAME]] 要素の内部で使われた場合はどうなのでしょう。 [[WinIE]] でも [[Mozilla]] でも、親文書の窓になりました。 HTML 4 の意図は分かりませんが、実態だけ考えれば [CODE(HTML)[FRAMESET]] に限定したのは間違いです。 Netscape の元の仕様 (>>10) も似たような表現ですから、そのままもってきて修正し忘れたのかもしれません。 [8] [[Mozilla]] 拡張の [CODE(HTML)[_content]] は、基本的には [CODE(HTML)[_self]] 同様に機能するようですが、例えば [[Sidebar]] に表示している頁で使うと通常のブラウザの部分に読み込ませることが出来ます。 WinIE は同様のものとして [CODE(HTML)[_main]] を使っています。 しかしこれは[[エクスプローラバー]]では使えても、通常のブラウザの部分では使えないようです。 Moz も IE も、相手のものは未対応らしく、新窓で開きます。 - [12] 仕様無視の[[不思議マーク付け]]の世界ではフレームの名前に [CODE(HTML)[_main]] (や他の [CODE(HTML)[_]] で始まる名前) を使っているところもあります。 >>8 はそれへの対処なんでしょうか。 (M$ がそうするとは考えにくいのですが。) - [13] >>5 にあるとおり、大文字・小文字は基本的に区別されません。しかし、ほとんどの場合これらの予約名には小文字が使われます。とはいうもののやはり、大文字を使った例も見受けられます。 - [15] しかし、実際には大文字と小文字を区別''する'' UA もあるようですから、小文字で統一した方が安全です。 [16] 数字のフレーム名ってよく見かけます。そういうのが既定値になっている変な authoring tool でもあるのでしょうか。 ([[名無しさん]] [WEAK[2004-03-29 12:40:40 +00:00]]) [17] > 13-15 大文字の予約名の実例、はじめてみました。なんだか新鮮。 ([[名無しさん]] [WEAK[2004-06-11 11:09:30 +00:00]]) [[#comment]] * 枠の決定 [20] [ABBR[HTML][ハイパーテキスト・マーク付け言語]] 4 の附属書には、リンク先文書を表示する[[枠]]を決定する [Q[[RUBYB[現在の慣習][current practice]]]]が説明されています。 - [[HTML 4]] -- [CITE[B.8 notes-framesNotes on frames]] [21] = 対象名が >>22 の予約名であれば、その通りに。 = リンクが含まれている[[窓]]の中の枠を深さ優先探索 (名前完全一致) で。 = 前の窓から後ろの窓に向かって、見つかるまで手順 2. を実行。 = 新しい窓を作り、それに対象名を割当てる。 [[#comment]] * メモ [18] ''Bug 105693 - W3C HTML 4.01 spec recommends we ignore non-alpha target'' 数字で始まるフレーム名や下線ではじまるフレーム名について。 ;; これによると、 [CODE(HTML)[_new]] は [[NC4]] で導入されて [[Gecko]] にも引き継がれているのだそうで。 ([[名無しさん]] [WEAK[2004-06-28 03:01:41 +00:00]])