* noframes 要素型 (HTML, XHTML 1) [5] [[HTML]] の [DFN[[CODE(HTMLe)[noframes]] 要素型]]の要素は、 [[フレーム]]の[[代替内容]]を記述します。 [6] 仕様書: - [[HTML 4]] -- [CITE[16.4.1 [CODE(HTMLe)[NOFRAMES]] element]] -- [CITE[HTML 4 Changes]] [7] : [[開始タグ]]: 必須 : [[終了タグ]]: 必須 : [[内容模型]] (HTML 4 Frameset DTD): [CODE(SGML)[[CODE(HTMLe)[[[body]]]] −[CODE(HTMLe)[noframes]]]] :出現できる文脈 (HTML 4 Frameset DTD): [CODE(HTMLe)[[[frameset]]]] 要素の子供として高々1個 :内容模型 (HTML 4 Transitional DTD): [CODE(SGML)[(%[[flow]];)*]] : 出現できる文脈 (HTML 4 Transitional DTD): [CODE(SGML)[%block]] な文脈 : [[属性]] : ,属性名,属性値,既定値,説明,出典 ,[CODE(HTMLa)[[[class]]]] ,,,[[級]] ,[HTML4] %[[coreattr]] ,[CODE(HTMLa)[[[dir]]]] ,,,[[書字方向]] ,[HTML4] %[[i18n]] ,[CODE(HTMLa)[[[id]]]] ,,,一意識別子 ,[HTML4] %coreattr ,[CODE(HTMLa)[[[lang]]]] ,,,[[自然言語]] ,[HTML4] %i18n ,[CODE(HTMLa)[[[xml]]:lang]],,,自然言語 ,[XHTML1] ,[CODE(HTMLa)[[[onclick]]]] ,,, ,[HTML4] %[[events]] ,[CODE(HTMLa)[[[ondblclick]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onkeydown]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onkeypress]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onkeyup]]]] ,,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmousedown]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmousemove]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseout]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseover]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[onmouseup]]]],,, ,[HTML4] %events ,[CODE(HTMLa)[[[style]]]] ,,,スタイル情報 ,[HTML4] %coreattr ,[CODE(HTMLa)[[[title]]]] ,,,注釈的題 ,[HTML4] %coreattr [[#comment]] ** 内容 [13] HTML 4 Frameset DTD の [CODE(HTMLe)[frameset]] 要素型宣言の内容模型によれば、 [CODE(HTMLe)[noframes]] は [CODE(HTMLe)[frameset]] の中で、 兄弟に対する位置に関わらず高々1個記述できます。 一方で、 HTML 4 仕様書 16.4.1 の記述によれば、 [CODE(HTMLe)[noframes]] は [CODE(HTMLe)[frameset]] の最後に記述できるようです。 どちらの記述が正しいのでしょうか? 慣習的には、 [CODE(HTMLe)[noframes]] は [CODE(HTMLe)[frameset]] の最後 ([CODE(HTMLe)[[[frame]]]] などの後) に書く人が多いようですが。 [[#comment]] ** 出現できる文脈 [1] XHTML m12n では [CODE(HTMLe)[noframes]] 要素を [CODE(HTMLe)[[[body]]]] 要素中に書くことが出来ません: ''bubble hour - 2001/12 #3'' [[#comment]] ** UA の利用 [8] [CODE(HTMLe)[noframes]] 要素は、フレームに対応していない UA やフレーム非表示に設定されている UA だけが表示するべき内容を指定します。 フレームに対応している UA は、フレーム非表示時に [CODE(HTMLe)[noframes]] の内容だけを表示しなければなりません。 フレーム未対応 UA は、常に [CODE(HTMLe)[noframes]] の内容だけを表示しなければなりません。 [SRC[HTML 4 16.4.1]] [9] Frameset DTD の文書では、 [CODE(HTMLe)[noframes]] は文書の [CODE(HTMLe)[frameset]] の最後で使って構いません。 [SRC[HTML 4 16.4.1]] [10] 例えば Transitional DTD でフレームの中身の文書でも使って構いません。 著者は [CODE(HTMLe)[noframes]] を使ってフレーム集合外やフレーム未対応 UA で見た時に文書の目的を説明できます。 [SRC[HTML 4 16.4.1]] [11] >>10 [Q[例えば]]って他にどのような場合があるのだろうか。 それはともかく、 >>10 のような目的だと、フレーム対応 UA であってもフレームなしで表示している時は表示しないといけないような気がしますが、 どうなのでしょう。 [[#comment]] ** 実装 [12] 普通の文書の [CODE(HTMLe)[body]] 内で使うという用法は HTML 4 で導入されたものなので、 HTML 4 以前の UA はフレームに対応していても表示してしまうのではないかと思いますが、どうでしょうか。 [2] [[Mozilla]] (1.4) は [CODE(XPath)[[CODE(HTMLe)[[[frameset]]]]/child::[CODE(HTMLe)[noframes]]]] の内容を [CODE(SGML)[[[CDATA]]]] として扱うらしい。 [WEAK[XHTML の場合や [CODE(HTMLe)[body]] 要素以下にある場合は確認してません。]] [4] [[Emacs/W3]] のフレーム非対応モードだと [CODE(HTMLe)[[[frameset]]]] の中身は、 [CODE(HTMLe)[noframes]] も含めて無視してしまうらしいです。 今の版でもそうなのかは知りませんが。。。 [14] [[w3m]] はフレームなしモードだと [CODE(HTMLe)[noframes]] 以外に [CODE(HTMLe)[frame]] 一覧をリンクとしてレンダリングします。 これは >>8 を厳密に解釈すると誤りになってしまいますけど、 [CODE(HTMLe)[noframes]] を書かなかったり[Q[フレーム対応ブラウザで〜]] しか書かなかったりってのが幅を利かせている状況ですから、 仕様書の規定は不適切で、こう実装するのは当然と言えます。 [[#comment]] ** 不思議解釈 [3] 一説、 [CODE(HTMLe)[[[head]]]] [[タグ]]の中(どこ)に入れないといけない。 [[#comment]] ** 他との関係 [16] 関係する要素型に [CODE(HTMLe)[[[noframe]]]] や [CODE(HTMLe)[[[noflame]]]] があります。 [[#comment]] ** 例 [17] 別頁の主内容に誘導する例 [SRC[HTML 4 16.4.1]] [PRE(HTML)[ A frameset document with NOFRAMES <P>Here is the <A href="main-noframes.html"> non-frame based version of the document.</A> ]PRE] [[#comment]] ** メモ [15] [CODE(HTMLe)[noframes]] 要素の内容に [Q[このページはフレームを使っています。フレーム対応のブラウザでご覧ください]] とだけ書いておくような人 (や[[著述工具]]) が多くいますが、 不適切であると考えれれています。 [[#comment]] * メモ