* 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] :状態:[[W3C]] [[勧告]] :[[名前空間URI]]:[CODE(URI)@en[[[http://www.w3.org/1999/xhtml]]]] :[[局所名]]:[CODE(HTMLe)@en[noframes]] ([Q@en[frame]] ([Q@en[[[フレーム]]]]) なし (未対応 / 不使用) より) :[[開始タグ]]:必須 :[[終了タグ]]:必須 :[[内容モデル]]: [CODE(SGML)@en[[CODE(HTMLe)@en[[[body]]]] −[CODE(HTMLe)[[[noframes]]]]]] ([[HTML 4]] [[フレーム集合DTD]])、 [CODE(SGML)[%[[flow]];*]] ([[HTML 4]] [[移行用DTD]]) :文脈:[CODE(HTMLe)@en[[[frameset]]]] の末尾に高々1個 ([[HTML 4]] [[フレーム集合DTD]])、 [CODE(SGML)@en[%[[block]];]] な文脈 ([[HTML 4]] [[移行用DTD]]) :[[属性]]: ,属性名 ,属性値 ,既定値 ,説明 ,出典 ,[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]] ** 内容 [[#comment]] ** 文脈 *** [CODE(HTMLe)@en[frameset]] 内 [19] [[HTML 4]] では、[[フレーム集合DTD]] で [CODE(HTMLe)@en[[[frameset]]]] [[要素]]の[[内容モデル]]が [PRE(SGML code)[ ((FRAMESET|FRAME)+ & NOFRAMES?) ]PRE] と定義されています。つまり、 [CODE(HTMLe)@en[[[noframes]]]] は [CODE(HTMLe)@en[[[frameset]]]] の最初か最後に高々1個 [CODE(HTMLe)@en[[[noframes]]]] を入れることができます。 [13] 一方で、 HTML 4 仕様書 16.4.1 の記述によれば、 [CODE(HTMLe)[noframes]] は [CODE(HTMLe)[frameset]] の最後に記述できるようです。 ;; 厳密には、最後に置いて構いませんと言っているだけで、 その他の場所には何も言及していませんが。 どちらの記述が正しいのでしょうか? 慣習的には、 [CODE(HTMLe)[noframes]] は [CODE(HTMLe)[frameset]] の最後 ([CODE(HTMLe)[[[frame]]]] などの後) に書く人が多いようですが。 [[#comment]] *** [CODE(HTMLe)@en[body]] 内 [1] XHTML m12n では [CODE(HTMLe)[noframes]] 要素を [CODE(HTMLe)[[[body]]]] 要素中に書くことが出来ません: ''bubble hour - 2001/12 #3'' [[#comment]] *** メモ [[#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]]]] [[タグ]]の中(どこ)に入れないといけない。 [18] '''検索円陣 spam''': [CODE(HTMLe)@en[noframes]] は近代[[視覚ブラウザ]]の初期設定では[[レンダリング]]されないことから、 [[検索円陣spam]] のためにこの[[要素]]が悪用されることがあります。 [[#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[このページはフレームを使っています。フレーム対応のブラウザでご覧ください]] とだけ書いておくような人 (や[[著述工具]]) が多くいますが、 不適切であると考えれれています。 [20] [CITE@en[Parsing: before <frameset>]] ([[Simon Pieters]] 著, [TIME[2008-04-04 23:55:21 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-html/2008Apr/0168.html> ([[名無しさん]]) [[#comment]] * メモ