/
395.txt
367 lines (284 loc) · 14.9 KB
/
395.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
[1] [[HTML]] の [DFN[[CODE(HTMLe)[frameset]] 要素型]]の要素は、
[[UA]] の主要窓内の表示の配置を指定します。
* 代替
[19] 通常の [[HTML文書]]に [CODE(HTMLe)@en[iframe]] [[要素]]で[[フレーム]]を配置できます。
[CODE(HTMLe)@en[frameset]] [[要素]]を使う必要はありません。
* 仕様書
[REFS[
- [2] [[HTML 4]]
-- 16.2 Layout of frames <IW:HTML4:"present/frames.html#h-16.2">
-- 16.3 Note <IW:HTML4:"present/frames.html#idx-frame-5">
]REFS]
[3]
:[[開始タグ]]:必須
:[[終了タグ]]:必須
:出現できる文脈:[CODE(HTMLe)[[[html]]]] の子供で [CODE(HTMLe)[[[head]]]] の後
:[[内容模型]]:[CODE(SGML)[([CODE(HTMLe)[frameset]] | [CODE(HTMLe)[[[frame]]]])+, [CODE(HTMLe)[[[noframes]]]]?]]
:[[属性]]:
,属性名 ,属性値 ,既定値 ,説明 ,状態 ,出典
,[CODE(HTMLa)[[[border]]]] , , ,境界線 ,非標準
,[CODE(HTMLa)[[[bordercolor]]]] , , ,境界線色 ,非標準
,[CODE(HTMLa)[[[class]]]] , ,(なし) ,級 ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
,[CODE(HTMLa)[[[cols]]]] ,[CODE(SGML)[%[[MultiLengths]]]] ,[CODE(HTML)[100%]] ,横分割 ,[HTML 4] 枠
,[CODE(HTMLa)[[[id]]]] ,[CODE(SGML)[[[ID]]]] ,(なし) ,固有識別子 ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
,[CODE(HTMLa)[[[frameborder]]]] , , ,境界線 ,非標準
,[CODE(HTMLa)[[[framespacing]]]] , , ,枠間隔 ,非標準
,[CODE(HTMLa)[[[layout]]]] , , , ,非標準
,[CODE(HTMLa)[[[onload]]]] ,[CODE(SGML)[%[[Script]]]] ,(なし) ,読込み時 ,[HTML 4] 枠
,[CODE(HTMLa)[[[onunload]]]] ,[CODE(SGML)[%[[Script]]]] ,(なし) ,Unload 時 ,[HTML 4] 枠
,[CODE(HTMLa)[[[rows]]]] ,[CODE(SGML)[%[[MultiLengths]]]] ,[CODE(HTML)[100%]] ,縦分割 ,[HTML 4] 枠
,[CODE(HTMLa)[[[style]]]] ,[CODE(SGML)[%[[StyleSheet]]]] ,(なし) ,スタイル ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
,[CODE(HTMLa)[[[title]]]] ,[CODE(SGML)[%[[Text]]]] ,(なし) ,注釈的題 ,[HTML 4] [CODE(SGML)[%[[coreattrs]]]]
,[CODE(XMLa)[[[xmlns]]]] ,[CODE(URI)[[[http://www.w3.org/1999/xhtml]]]] 固定 ,== ,[[名前空間名]] ,W3C 勧告 ,[[XHTML m12n]]
[CODE(HTMLa)[cols]] と [CODE(HTMLa)[rows]] は、
両方指定しても指定しなくても、一方だけ指定しても構いません。
[[#comment]]
** 出現できる文脈
[4] 通常 [CODE(HTMLe)[[[body]]]] 内に出現する要素は
([CODE(HTMLe)[head]] の弟の) [CODE(HTMLe)[frameset]] より前に現れてはなりません
[SRC[HTML 4 16.2]]。
といってもこれは内容模型的に当たり前のことです。
* 構文
** frameset-ok フラグ
[39] frameset-ok フラグを not ok に設定しない [CODE(HTMLe)@en[[[body]]]]
内の[[要素]]の[[開始タグ]]を使うことで、削除される [CODE(HTMLe)@en[[[body]]]]
[[要素]]に[[スクリプト]]からアクセスできます。
;;
[REFS[
- <http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Ca%3E%3Cscript%3Eb%3Ddocument.body%3B%20window.onload%20%3D%20function%20()%20%7B%20document.body.appendChild%20(b)%20%7D%3C%2Fscript%3E%3Cframeset%3E%3C%2Fframeset%3E>
]REFS]
[40] [[IE9]] は frameset-ok フラグを正しく実装していないようで、
in body でどの[[開始タグ]]でも not ok が設定されるように動作します。
** 内容
[8] [CODE(HTMLe)[frameset]] 要素は枠の配置を定義しますが、
実際のその枠の名前や初期状態などは、 [CODE(HTMLe)[[[frame]]]]
要素を使って定義します。更に分割する際には [CODE(HTMLe)[noframes]]
を入れ子に使います。
[CODE(HTMLe)[frame]] や [CODE(HTMLe)[noframes]] は、
[CODE(HTMLa)[rows]] と [CODE(HTMLa)[cols]] によって定義した枠1つに対応します。
[[文書順]]に、1行1列, 1行2列, ..., 1行[VAR[n]]列,
2行1列, 2行2列, ..., 2行[VAR[n]] 列, ...,
[VAR[n]]行1列, [VAR[n]]行2列, ..., [VAR[n]]行[VAR[n]]列と対応します。
[SRC[HTML 4 16.2.1.1]]
[9]
また、枠に対応していない UA や枠を使わない設定の場合などのために、
[CODE(HTMLe)[[[noframes]]]] 要素で[[代替内容]]を記述しておくべきです。
[21]
[[内容]]中の [CODE(HTMLe)@en[[[noframes]]]] [[要素]]の位置については、
[CODE(HTMLe)@en[[[noframes]]]] の項を参照。
([[名無しさん]] [sage])
[[#comment]]
** フレーム集合の状態
[11] [CODE(HTMLe)[frameset]] 要素の内容や属性が定義するのは、
フレーム集合の初期状態に過ぎません。フレーム集合の内容は、
利用者の操作 (リンクを辿るとか、枠の大きさを変えるとか)
によって変更され得ます。 (但し、フレーム集合定義は不変です。)
[SRC[HTML 4 16.3 Note]]
[12]
フレーム集合の初期状態は、フレーム集合定義文書そのものとして
[[URI]] で表現可能ですが、変更されたフレーム集合のある状態はそうではありません。
[SRC[HTML 4 16.3 Note]]
この URI で表現できないという問題は、フレームの大きな欠点の一つとしてしばしばとりあげられます。
[13]
この問題の解決策は幾つか提示されてきました。
著者側での解決方法の一つは、
想定される組合せだけフレーム集合文書を用意しておくというものですが、
これはフレームの利点を殺すようなものです。
また、 URI の [CODE(ABNF)[[[query]]]] などを利用して、
フレーム集合文書を機械的に用意するという方法も行われています。
(鯖側で [[CGI]] や同種の仕組みを使って実現する他に、
クライアント側スクリプトで [CODE(HTMLa)[[[src]]]]
を書き換えるなど強引な解決方法を採っていることもあります。)
[14] 比較的新しい UA の中には、[[栞]]を挟むときに、
URI とは別にフレームの状態の情報を保存できるものもあります。
また、[[素片識別子]]にフレームの状態を記述すればよいという提案もあります。
HTML のフレームの後継規格である [[XFrames]]
もその方向で策定が進められています。
[15] また、フレームを使うと履歴機能などによる利用者の操作が難しくなるという問題があります
[SRC[HTML 4 16.3 Note]]。
古い実装には、フレーム内でリンクを辿って一部のフレームの状態が変わっても履歴に反映されなかったようなものもありました。
実装・利用経験から少しずつ操作性は改善されていますが、
根本的な解決にはなっていません。
(そもそもは、フレームによって頁移動が非線形になったのに多くの UA
の履歴機能が線形なのが問題です。)
** 関連
[7] [CODE(HTMLe)[frameset]] 文書の [CODE(HTMLe)[head]]
で [CODE(HTMLe)[[[object]]]] 要素を使って、
子フレーム間でデータを共有することができます [SRC[HTML 4 16.2.1.3]]。
>>6 の例を参照してください。
[37] [[XFrames]] には [CODE(XMLe)@en[[[group]]]] [[要素]]があり、
[CODE(HTMLe)@en[[[frameset]]]] [[要素]]と似た役割を果たしています。
** 例
[5] 入れ子の例 [SRC[HTML 4 16.2.1.2]]
[PRE(HTML)[
<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>
]PRE]
この例では、窓全体を横3つにほぼ均等に分け、
左から2つ目をたてに2つに分けています。
[6] フレーム間データ共有の例 [SRC[HTML 4 16.2.1.3]]
[PRE(HTML)[
<!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>
]PRE]
利用する側の例:
[PRE(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>
]PRE]
実際の文書では、 [SAMP(URI)[bianca.html]]
がフレーム無しで単独で読み込まれることが十二分にあり得ますから、
スクリプト内でその場合の対処を行う必要があります。
[10] フレーム集合文書の例 [SRC[HTML 4 16.1]]
[PRE(HTML)[
<!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>
]PRE]
レンダリング例:
[PRE(HTML)[
---------------------------------------
| | |
| | |
| Frame 1 | |
| | |
| | |
|---------| |
| | Frame 3 |
| | |
| | |
| | |
| Frame 2 | |
| | |
| | |
| | |
| | |
---------------------------------------
]PRE]
[16]
[CITE[NAP勉強会 -- フレームについて考える --]] <http://www.accessibility.org/workshops/Nov2002/frame.html>
([[名無しさん]] [sage])
[17]
[CITE[05/10/2003勉強会の記録]] <http://www.accessibility.org/workshops/May2003/minutes.html>
[20]
[CODE(HTMLe)@en[[[head]]]] 内に置いた例
[PRE(HTML example code invalid)[
<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>
]PRE]
;;
出典: [[Windows XP]] [[日本語版]]の
[CODE(file)@en[C:\windows\help\Tours\htmlTour\connected_fr.htm]]
([[名無しさん]])
[[#comment]]
** メモ
[22]
[CITE[Frame Implementation Notes]] ([CODE[2007-02-28 00:35:27 +09:00]] 版) <http://web.archive.org/web/19970613222258/www82.netscape.com/assist/net_sites/frame_implement.html>
([[名無しさん]])
[23]
[CITE[KOTOERI-HTML]] ([CODE[2006-11-05 06:29:16 +09:00]] 版) <http://www.tcp-ip.or.jp/~h-log/html/HTMLdic.html#frame>
> フレームを書くときは<BODY>を書かないことに注意!
あと、この文書は [CODE(HTMLe)@en[[[frameset]]]] の''最初''の[[子要素]]を
[CODE(HTMLe)@en[[[noframe]]]] (sic) にしている。
([[名無しさん]])
[25]
[CITE[こぶたのラッパ : HTML5でframeが使えなくなったらJavadocはどうなるの?]] ([[smilkobuta]] 著, [CODE[2008-03-09 21:55:17 +09:00]] 版) <http://smil.exblog.jp/8063796/>
([[名無しさん]])
[26]
[CITE[こぶたのラッパ : HTML5でもframeを使おう!<解決編>]] ([[smilkobuta]] 著, [CODE[2008-03-09 21:56:39 +09:00]] 版) <http://smil.exblog.jp/8079680/>
([[名無しさん]])
[27]
>>25 不適合化が何も解決しないといういい例ですね。
([[名無しさん]] [WEAK[2008-03-09 12:58:51 +00:00]])
[28]
[CITE['''['''JavaHouse-Brewers:6099''']''' # bye]] ([CODE[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]
[CITE[HTML5 IRC logs: freenode / #whatwg / 20070823]] ([CODE[2007-08-23 12:02:14 +09:00]] 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20070823#l-181>
[[文書]]中に現れる[[要素型]]の数は[[正規分布]]に見えますが、数個のところに不自然な出っ張りがあります。単なるノイズではなく、複数の調査結果に現れています。
この出っ張りは、限られた数の[[要素型]]しか使用しない[[フレーム集合]][[文書]]に由来するもののようです。
([[名無しさん]] [WEAK[2007-08-23 03:06:02 +00:00]])
[30] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-09-06 21:28:03 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=2702&to=2703>
[31] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-09-06 21:28:44 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=2986&to=2987>
[32] [CITE@en[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]]
( ([TIME[2010-09-29 06:57:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5533&to=5534>
[33] [CITE@en[Web Applications 1.0 r5730 Change how <input type=hidden> affects the frameset flag.]]
( ([TIME[2010-12-31 13:04:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5729&to=5730>
* フレーム集合
[34]
>
The collection of frames in an XFrames document is referred to as a [DFN[frameset]].
** 仕様書
- [35]
[CITE@en[XFrames]] ([TIME[2010-12-17 00:45:08 +09:00]] 版) <http://www.w3.org/TR/2010/NOTE-xframes-20101216/#s_frames-element>
** メモ
[36] この定義は [CODE(XMLe)@en[[[frames]]]] [[要素]]の説明に含まれていますが、
その説明文からは [CODE(XMLe)@en[[[frames]]]] [[要素]]と[[フレーム集合]]との関係は明確になっていません。
[[HTML]] の[[要素]]との関連では、むしろ [CODE(XMLe)@en[[[group]]]]
[[要素]]の方が [CODE(HTMLe)@en[[[frameset]]]] [[要素]]に近いように思えます。
[38] [CITE@en[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.]]
( ([TIME[2011-10-12 08:12:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6662&to=6663>
[18] [CITE@en[ISSUE-697/ACTION-1658: Fix glossary entry for "Role". · w3c/aria@9fac811]]
([TIME[2015-06-19 18:37:01 +09:00]] 版)
<https://github.com/w3c/aria/commit/9fac811f75ad7ef33ef5a704ec06d508c79ba468>