[1] HTML の frameset
要素型の要素は、
UA の主要窓内の表示の配置を指定します。
[19] 通常の HTML文書に iframe
要素でフレームを配置できます。
frameset
要素を使う必要はありません。
html
の子供で head
の後(frameset
| frame
)+, noframes
?
属性名 | 属性値 | 既定値 | 説明 | 状態 | 出典 |
border | 境界線 | 非標準 | |||
bordercolor | 境界線色 | 非標準 | |||
class | (なし) | 級 | [HTML 4] %coreattrs | ||
cols | %MultiLengths | 100% | 横分割 | [HTML 4] 枠 | |
id | ID | (なし) | 固有識別子 | [HTML 4] %coreattrs | |
frameborder | 境界線 | 非標準 | |||
framespacing | 枠間隔 | 非標準 | |||
layout | 非標準 | ||||
onload | %Script | (なし) | 読込み時 | [HTML 4] 枠 | |
onunload | %Script | (なし) | Unload 時 | [HTML 4] 枠 | |
rows | %MultiLengths | 100% | 縦分割 | [HTML 4] 枠 | |
style | %StyleSheet | (なし) | スタイル | [HTML 4] %coreattrs | |
title | %Text | (なし) | 注釈的題 | [HTML 4] %coreattrs | |
xmlns | http://www.w3.org/1999/xhtml 固定 | 名前空間名 | W3C 勧告 | XHTML m12n |
cols
と rows
は、
両方指定しても指定しなくても、一方だけ指定しても構いません。
[4] 通常 body
内に出現する要素は
(head
の弟の) frameset
より前に現れてはなりません
HTML 4 16.2。
といってもこれは内容模型的に当たり前のことです。
[39] frameset-ok フラグを not ok に設定しない body
内の要素の開始タグを使うことで、削除される body
要素にスクリプトからアクセスできます。
[40] IE9 は frameset-ok フラグを正しく実装していないようで、 in body でどの開始タグでも not ok が設定されるように動作します。
[8] frameset
要素は枠の配置を定義しますが、
実際のその枠の名前や初期状態などは、 frame
要素を使って定義します。更に分割する際には noframes
を入れ子に使います。
frame
や noframes
は、
rows
と cols
によって定義した枠1つに対応します。
文書順に、1行1列, 1行2列, ..., 1行n列,
2行1列, 2行2列, ..., 2行n 列, ...,
n行1列, n行2列, ..., n行n列と対応します。
HTML 4 16.2.1.1
[9]
また、枠に対応していない UA や枠を使わない設定の場合などのために、
noframes
要素で代替内容を記述しておくべきです。
[21]
内容中の noframes
要素の位置については、
noframes
の項を参照。
(名無しさん [sage])
[11] frameset
要素の内容や属性が定義するのは、
フレーム集合の初期状態に過ぎません。フレーム集合の内容は、
利用者の操作 (リンクを辿るとか、枠の大きさを変えるとか)
によって変更され得ます。 (但し、フレーム集合定義は不変です。)
HTML 4 16.3 Note
[12] フレーム集合の初期状態は、フレーム集合定義文書そのものとして URI で表現可能ですが、変更されたフレーム集合のある状態はそうではありません。 HTML 4 16.3 Note
この URI で表現できないという問題は、フレームの大きな欠点の一つとしてしばしばとりあげられます。
[13] この問題の解決策は幾つか提示されてきました。 著者側での解決方法の一つは、 想定される組合せだけフレーム集合文書を用意しておくというものですが、 これはフレームの利点を殺すようなものです。
また、 URI の query
などを利用して、
フレーム集合文書を機械的に用意するという方法も行われています。
(鯖側で CGI や同種の仕組みを使って実現する他に、
クライアント側スクリプトで src
を書き換えるなど強引な解決方法を採っていることもあります。)
[14] 比較的新しい UA の中には、栞を挟むときに、 URI とは別にフレームの状態の情報を保存できるものもあります。
また、素片識別子にフレームの状態を記述すればよいという提案もあります。 HTML のフレームの後継規格である XFrames もその方向で策定が進められています。
[15] また、フレームを使うと履歴機能などによる利用者の操作が難しくなるという問題があります HTML 4 16.3 Note。
古い実装には、フレーム内でリンクを辿って一部のフレームの状態が変わっても履歴に反映されなかったようなものもありました。 実装・利用経験から少しずつ操作性は改善されていますが、 根本的な解決にはなっていません。
(そもそもは、フレームによって頁移動が非線形になったのに多くの UA の履歴機能が線形なのが問題です。)
[7] frameset
文書の head
で object
要素を使って、
子フレーム間でデータを共有することができます HTML 4 16.2.1.3。
>>6 の例を参照してください。
[5] 入れ子の例 HTML 4 16.2.1.2
<FRAMESET cols="33%, 33%, 34%"> ...contents of first frame... <FRAMESET rows="40%, 50%"> ...contents of second frame, first row... ...contents of second frame, second row... </FRAMESET> ...contents of third frame... </FRAMESET>
この例では、窓全体を横3つにほぼ均等に分け、 左から2つ目をたてに2つに分けています。
[6] フレーム間データ共有の例 HTML 4 16.2.1.3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>This is a frameset with OBJECT in the HEAD</TITLE> <!-- This OBJECT is not rendered! --> <OBJECT id="myobject" data="data.bar"></OBJECT> </HEAD> <FRAMESET> <FRAME src="bianca.html" name="bianca"> </FRAMESET> </HTML>
利用する側の例:
<!-- In bianca.html --> <HTML> <HEAD> <TITLE>Bianca's page</TITLE> </HEAD> <BODY> ...the beginning of the document... <P> <SCRIPT type="text/javascript"> parent.myobject.myproperty </SCRIPT> ...the rest of the document... </BODY> </HTML>
実際の文書では、 bianca.html がフレーム無しで単独で読み込まれることが十二分にあり得ますから、 スクリプト内でその場合の対処を行う必要があります。
[10] フレーム集合文書の例 HTML 4 16.1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <HTML> <HEAD> <TITLE>A simple frameset document</TITLE> </HEAD> <FRAMESET cols="20%, 80%"> <FRAMESET rows="100, 200"> <FRAME src="contents_of_frame1.html"> <FRAME src="contents_of_frame2.gif"> </FRAMESET> <FRAME src="contents_of_frame3.html"> <NOFRAMES> <P>This frameset document contains: <UL> <LI><A href="contents_of_frame1.html">Some neat contents</A> <LI><IMG src="contents_of_frame2.gif" alt="A neat image"> <LI><A href="contents_of_frame3.html">Some other neat contents</A> </UL> </NOFRAMES> </FRAMESET> </HTML>
レンダリング例:
--------------------------------------- | | | | | | | Frame 1 | | | | | | | | |---------| | | | Frame 3 | | | | | | | | | | | Frame 2 | | | | | | | | | | | | | | ---------------------------------------
[16] NAP勉強会 -- フレームについて考える -- http://www.accessibility.org/workshops/Nov2002/frame.html (名無しさん [sage])
[17] 05/10/2003勉強会の記録 http://www.accessibility.org/workshops/May2003/minutes.html
<HTML DIR=LTR> <HEAD> <!-- saved from url=(0014)about:internet --> <TITLE>自宅でオフィスでネットワーク</TITLE><FRAMESET ROWS="*,35"> <FRAME NAME="body" SRC="connected_multiple.htm" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="auto" FRAMEBORDER="0"> <FRAME NAME="footer" SRC="footer.htm" MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="No" FRAMEBORDER="0"> </frameset></HEAD><BODY></BODY></HTML>
(名無しさん)
[22]
Frame Implementation Notes (2007-02-28 00:35:27 +09:00
版) http://web.archive.org/web/19970613222258/www82.netscape.com/assist/net_sites/frame_implement.html
(名無しさん)
[23]
KOTOERI-HTML (2006-11-05 06:29:16 +09:00
版) http://www.tcp-ip.or.jp/~h-log/html/HTMLdic.html#frame
フレームを書くときは<BODY>を書かないことに注意!
あと、この文書は frameset
の最初の子要素を
noframe
(sic) にしている。
(名無しさん)
[25]
こぶたのラッパ : HTML5でframeが使えなくなったらJavadocはどうなるの? (smilkobuta 著, 2008-03-09 21:55:17 +09:00
版) http://smil.exblog.jp/8063796/
(名無しさん)
[26]
こぶたのラッパ : HTML5でもframeを使おう!<解決編> (smilkobuta 著, 2008-03-09 21:56:39 +09:00
版) http://smil.exblog.jp/8079680/
(名無しさん)
[27] >>25 不適合化が何も解決しないといういい例ですね。 (名無しさん 2008-03-09 12:58:51 +00:00)
[28]
[JavaHouse-Brewers:6099] # bye (2001-11-24 19:25:59 +09:00
版) http://java-house.jp/ml/archive/j-h-b/006099.html
(名無しさん)
[29] >>28 http://suika.fam.cx/~wakaba/-temp/test/html/frame/flow-tag-then-frameset/demo-1.html
[24]
HTML5 IRC logs: freenode / #whatwg / 20070823 (2007-08-23 12:02:14 +09:00
版) http://krijnhoetmer.nl/irc-logs/whatwg/20070823#l-181
文書中に現れる要素型の数は正規分布に見えますが、数個のところに不自然な出っ張りがあります。単なるノイズではなく、複数の調査結果に現れています。
この出っ張りは、限られた数の要素型しか使用しないフレーム集合文書に由来するもののようです。 (名無しさん 2007-08-23 03:06:02 +00:00)
[30] (X)HTML5 Tracking ( 版) http://html5.org/tools/web-apps-tracker?from=2702&to=2703
[44] >>28, >>29 を Hixie に報告したら >>30 で frameset-ok フラグが導入されました。
[31] (X)HTML5 Tracking ( 版) http://html5.org/tools/web-apps-tracker?from=2986&to=2987
[32] Web Applications 1.0 r5534 Make a second (bogus) <body> reset the frameset-ok flag.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10630 ( ( 版)) http://html5.org/tools/web-apps-tracker?from=5533&to=5534
[33] Web Applications 1.0 r5730 Change how <input type=hidden> affects the frameset flag. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=5729&to=5730
The collection of frames in an XFrames document is referred to as a frameset.
[36] この定義は frames
要素の説明に含まれていますが、
その説明文からは frames
要素とフレーム集合との関係は明確になっていません。
HTML の要素との関連では、むしろ group
要素の方が frameset
要素に近いように思えます。
[38] Web Applications 1.0 r6663 Fix the <frameset> rendering rule to trigger when 'the body element' is frameset, not just when the second child of the root element is. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=6662&to=6663
[18] ISSUE-697/ACTION-1658: Fix glossary entry for "Role". · w3c/aria@9fac811 ( 版) https://github.com/w3c/aria/commit/9fac811f75ad7ef33ef5a704ec06d508c79ba468
[41] Editorial: Cross-reference DOM "child" where appropriate in rendering (zcorpan著, ) https://github.com/whatwg/html/commit/e8c91c05edc8d6cdb33fdd5452e052359d40490b
[45] Deprecations and removals in Chrome 69 | Web | Google Developers () https://developers.google.com/web/updates/2018/09/chrome-70-deps-rems