/
489.txt
347 lines (264 loc) · 17.2 KB
/
489.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
* 仕様書
[REFS[
- [36] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#browsing-context-name>
- [33] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-name>
- [48] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-embed-name>
]REFS]
* 閲覧文脈名
[37] [[閲覧文脈]]は、[DFN[[RUBYB[[[閲覧文脈名]]]@en[browsing context name]]]]を持つことができます。
初期状態では[[閲覧文脈名]]はありません。 [SRC[>>36]]
[51] [[閲覧文脈名]]は、[[閲覧文脈包含子]]の[[要素]]の [CODE(HTMLa)@en[[[name]]]]
[[内容属性]]により決まります。
[50] [[閲覧文脈名]]は、[[履歴の探索]]により、[[活性文書]]に合わせて変化します。
* [CODE(DOMi)@en[Window]] インターフェイス [CODE(DOMa)@en[name]] 属性
[34] [CODE(DOMi)@en[[[Window]]]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[[[name]]]]]] [[IDL属性]]は、
[[取得器]]は[[閲覧文脈名]]を返し、
[[設定器]]は[[閲覧文脈名]]を設定するものでなければ[['''なりません''']]。
ただし[[閲覧文脈名]]が未設定の時は、[[空文字列]]を返さなければ[['''なりません''']]。
[SRC[>>33]]
[35] この[[属性]]の型は、 [CODE(IDL)@en[[[DOMString]]]] です [SRC[>>33]]。
* フレーム系 [CODE(HTMLa)@en[name]] 属性
[52] [[HTML]] の [CODE(HTMLe)[[[frame]]]] 要素および
[CODE(HTMLe)[[[iframe]]]] 要素、
[CODE(HTMLe)@en[[[embed]]]] [[要素]]の
[DFN[[CODE(HTMLa)[name]] 属性]]は、枠に名前を割当てます。
[46] [CODE(HTMLe)@en[[[embed]]]] [[要素]]から[[閲覧文脈の作成]]が行われる際に、
[CODE(HTMLa)@en[[[name]]]] [[属性]]があれば設定されます。
;; [47] 後から変更されても反映されないようです。
[55]
また、多くの高機能 [[UA]] では [[DOM]] を介して名前でフレームに
access できますが、その時、 [[ECMAScript]]
束縛のように簡略記法が用意されていることもあります
(例えば、 [SAMP(JS)[window.[VAR[frame1]]]] で [SAMP[frame1]]
に access できるかもしれません)。そのような利用も考慮するなら、
一般的なスクリプト言語で[[名前]]として使える構文に従った名前を付けるのが得策かもしれません。
[56] この属性は省略可能です。
[49] [CODE(DOMi)@en[[[HTMLEmbedElement]]]] [[インターフェイス]]の[[廃止]]状態の
[[IDL属性]] [DFN[[CODE(DOMa)@en[[[name]]]]]] は、[CODE(HTMLa)@en[[[name]]]]
[[内容属性]]を[[反映]]しなければ[['''なりません''']] [SRC[>>48]]。
[[文字列]]として[[反映]]します。
* 歴史
** [CODE(DOMi)@en[Window-Target:]] ヘッダー (HTTP)
[38] HTML で言うところの base 要素の target 属性的な HTTP 頭欄。
Netscape Navigator 2.0 以降の独自拡張。
[EG[
[39]
[PRE(HTTP code)[
Window-Target: _top
]PRE]
]EG]
** 飛び先フレーム名
そもそもフレーム名ってどんな文字が使えるんですか。
- W3C HTML4 から <http://www.w3.org/TR/html4/types.html#type-frame-target>
最初の文字は、 [A-Za-z] または "_" (予約名) で、2文字目以降は
よく分かりません。 SGML (DTD) 的には CDATA です。
気持ち的には _?[A-Za-z]+ なんですかね? ま、現実には何でもあり
なんでしょーが。
- Window-Target = "Window-Target:" FWS target-frame
- target-frame = 1*ALPHA / special-target / obs-target-frame
- special-target = "_" 1*ALPHA
- obs-target-frame = 1*cchar
- cchar = <A character allowed in SGML (HTML4) CDATA>
HTML4 によると大文字・小文字は区別されません。
Netscape の仕様に拠ると先頭文字は DIGIT でもいい(良かった)模様。
それ以外の文字から始まる時は''無視''するようです。
特殊名で未定義のときも無視。
[40] <http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/target.html>
[41] [CITE[How to target a link to a window]] ([TIME[2007-02-28 00:30:29 +09:00]] 版) <http://web.archive.org/web/19970613222251/www82.netscape.com/eng/mozilla/2.0/relnotes/demo/target.html>
[42] [CITE@en[Web Applications 1.0 r7828 Try to clarify browsing context rules]]
( ([TIME[2013-04-14 01:18:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7827&to=7828>
[43] [CITE[OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema]]
([TIME[2011-09-29 13:00:00 +09:00]] 版)
<http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#a19_380office_target-frame>
[44] [CITE[Jumping out of the window - how to get rid of frames]]
([[Jahn Rentmeister, rentmei@uni-muenster.de]] 著, [TIME[2015-01-24 22:10:06 +09:00]] 版)
<http://web.archive.org/web/19990203145328/http://www.uni-muenster.de/WiWi/home/rentmei/html/frames.html>
[45] [CITE[''''''[''''''whatwg'''''']'''''' Specify href target with HTTP headers]]
( ([TIME[2012-06-09 07:46:05 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-June/036334.html>
** HTML4
[1] [[HTML 4]] などの [[DTD]] において、 [CODE(HTML)[%FrameTarget;]]
は対象フレーム名を表します。
[[a]] 要素などの [[target]] 属性の値が [CODE(HTML)[%FrameTarget;]]
として定義されています。また、 [[frame]] 要素や [[iframe]]
要素の [[name]] 属性の値も、 (DTD 上は直接 [[CDATA]] になっていますが)
[CODE(HTML)[%FrameTarget;]] と考えて良いでしょう。
[REFS[
[53] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[frame]] 要素 [CODE(HTMLa)[name]] 属性
<IW:HTML4:"present/frames.html#adef-name-FRAME">
-- [CODE(HTMLe)[iframe]] 要素 [CODE(HTMLa)[name]] 属性
<IW:HTML4:"present/frames.html#adef-name-IFRAME">
- [[XHTML 1.0]]
-- [CSECTION@en[4.10. The elements with 'id' and 'name' attributes]]
([[参考]])
<IW:XHTML1:"#h-4.10">
]REFS]
[92]
HTML 4 仕様書本文では、 [CODE(HTMLe)[iframe]] 要素型の定義で、
[CODE(HTMLa)[name]] 属性を独自の定義と [CODE(HTMLe)[frame]]
要素型での定義の参照の両方としています。
おそらくいずれかが間違いなのでしょうが、幸い、
どちらの [CODE(HTMLa)[name]] の定義もまったく同じ内容ですから、
問題にはなりません。
[93]
この[[属性]]は'''[[非推奨]]'''です
[SRC[[[XHTML 1.0]] 4.10 ([[参考]])]]。
代わりに [CODE(HTMLa)@en[[[id]]]]
[[属性]]を使うことができます。
;; ただし、 [CODE(HTMLa)@en[[[name]]]] と
[CODE(HTMLa)@en[[[id]]]] では、
[[属性値]]に課された制約が異なります。
[[噂の[CODE(XML)@en[ID]]問題]]の項などをご覧下さい。
[94] [[XHTML 1.0]] では将来の版での削除が予告されており、
実際に [[XHTML 1.1]] には [CODE(HTMLa)@en[[[name]]]]
は含まれていません。
[54] この属性の値は [CODE(SGML)[[[CDATA]]]] です。
特に名前に制限は無いみたいです [SRC[HTML 4 16.2.2, 16.5]]。
大文字・小文字は区別されません [SRC[HTML 4 16.2.2, 16.5]]。
ただし、名前を参照する側の [CODE(HTMLa)[[[target]]]]
属性の値は [CODE(SGML)[%[[FrameTarget]]]] ですから、
それ以外にすると使い辛いでしょう。
** フレーム名
[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'' <http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/target.html>
- [3] [HTML4] ''Basic HTML data types: Frame target names'' <IW:HTML4:"types.html#type-frame-target">
- [4] ''Frames in HTML documents: Specifying target frame information'' <IW:HTML4:"present/frames.html#target-info">
- [14] ''Common Markup for micropayment per-fee-links: a W3C Public Working Draft'' <http://www.w3.org/TR/Micropayment-Markup/#target>: HTML 4 と同じように定義された [CODE[[[target]]]] 引数が存在します。既定値は [CODE[_self]] です。
- [[XHTML 1.0]]
-- [CSECTION[A.1.1. XHTML-1.0-Strict]]
<http://www.w3.org/TR/2002/REC-xhtml1-20020801/dtds.html#dtdentry_xhtml1-strict.dtd_FrameTarget>
-- [CSECTION[A.1.2. XHTML-1.0-Transitional]]
<http://www.w3.org/TR/2002/REC-xhtml1-20020801/dtds.html#dtdentry_xhtml1-transitional.dtd_FrameTarget>
-- [CSECTION[A.1.3. XHTML-1.0-Frameset]]
<http://www.w3.org/TR/2002/REC-xhtml1-20020801/dtds.html#dtdentry_xhtml1-frameset.dtd_FrameTarget>
- [[XHTML m12n]]
-- [CSECTION[4.3. Attribute Types]]
<IW:XHTML1m12n:"abstraction.html#dt_FrameTarget">
- [[WebCGM]]
-- 第1版: [CITE[WebCGM Intelligent Content]]
<http://www.w3.org/TR/1999/REC-WebCGM-19990121/REC-03-CGM-IC.html#webcgm_3_1>
-- 第2版: [CITE[WebCGM Intelligent Content]]
<http://www.w3.org/TR/2001/REC-WebCGM-20011217/REC-03-CGM-IC.html#webcgm_3_1_2_2>
-- 2.0 [[会員提出]]:
[CITE@en[OASIS CGM Open specification - WebCGM 2.0 - WebCGM Intelligent Content]]
<http://www.w3.org/Submission/2006/SUBM-WebCGM20-20060313/WebCGM20-IC.html#webcgm_3_1_2_2>
-- 2.0 [[勧告]]:
[CITE[WebCGM 2.0 - WebCGM Intelligent Content]] ([CODE[2007-01-25 02:12:49 +09:00]] 版)
<http://www.w3.org/TR/2007/REC-webcgm20-20070130/WebCGM20-IC.html#webcgm_3_1_2_2>
-- 2.0 [[標準]]:
[CITE[WebCGM 2.0 - WebCGM Intelligent Content]] ([CODE[2006-11-04 01:53:46 +09:00]] 版)
<http://docs.oasis-open.org/webcgm/v2.0/OS/WebCGM20-IC.html#webcgm_3_1_2_2>
-- 2.1 [[勧告]]:
<http://www.w3.org/Graphics/WebCGM/drafts/REC/WebCGM21-IC.html#webcgm_3_1_2_2>
- [[OpenDocument]] 1.0
--[CSECTION@en[3.1.14 Hypertext Behavior]]
[19]
[[WebCGM]] は HTML 4 の予約名に加えて [CODE[_replace]] (埋込み CGM 画像内のリンクをたどった時、その画像を置き換える) を定義しています。
[23]
[[SVG]] は [[WebCGM]] と同じものを採用しています。
ただし枠名は [[XML]] の[[名前]]であるとしています。
@@ XML 1.0? XML 1.1? 版不特定?
** 特殊フレーム名
[22]
,[CODE(SGML)[%FrameTarget]] ,説明 ,状態 ,出典
,[CODE(ABNF)[[[ALPHA]] [CODE(SGML)[[[CDATA]]]]]] ,フレーム名による指定 ,W3C 勧告 ,"[HTML 4], [WebCGM]"
,[[XML]] [[名前]] ,フレーム名による指定 ,W3C 勧告 ,[SVG]
,[CODE(HTML)[[[_blank]]]] ,新しい無名の窓 ,W3C 勧告 ,"[Netscape], [HTML 4], [WebCGM], [OpenDocument], [OOXML]"
,[CODE(HTML)[[[_content]]]] ,主表示領域 >>8 ,非標準 ,[[Mozilla]]
,[CODE(HTML)[[[_main]]]] ,主表示領域 >>8 ,非標準 ,[[WinIE]]
,[CODE(HTML)@en[[[_media]]]],[[媒体バー]],[[ECMA]] [[規格]],"[[WinIE 6]]+, [[OOXML]]"
,[CODE(HTML)@en[[[_next]]]]
,[CODE(HTML)[[[_search]]]] ,検索用表示領域 ,[[ECMA]] [[規格]],"[[Mozilla]], [[WinIE 5]]+, [[OOXML]]"
,[CODE(HTML)[[[_self]]]] ,同じフレーム ,W3C 勧告 ,"[Netscape], [HTML 4], [WebCGM], [OpenDocument], [OOXML]"
,[CODE(HTML)[[[_parent]]]] ,親フレーム ,W3C 勧告 ,"[Netscape], [HTML 4], [WebCGM], [OpenDocument], [OOXML]"
,[CODE(HTML)[[[_replace]]]] ,同じ領域 >>19 ,W3C 勧告 ,[WebCGM]
,[CODE(HTML)[[[_top]]]] ,同じ窓全体 ,W3C 勧告 ,"[Netscape], [HTML 4], [WebCGM], [OpenDocument], [OOXML]"
[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]])
[25]
[CITE[Target Attribute Values]] ([[Lachlan Hunt <lachlan.hunt@...>]] 著, [TIME[2007-04-26 07:34:02 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/10387>
([[名無しさん]] [WEAK[2007-04-28 04:10:21 +00:00]])
[26] [OOXML] は [[OOXML]] の [[VML]] 用 [CODE(XMLa)@en[[[target]]]]
[[属性]]。
[27] [OpenDocument] は [[OpenDocument]] の [CODE(XMLa)@en[meta:[[target-frame-name]]]]
[[属性]]。
[28] [[OpenDocument]] も [[OOXML]] も、[[閲覧文脈名]]の[[文字]]の種類に制限はないみたいです
([CODE[_]] も含め、何も言及がありません)。
** 枠の決定
[20] [ABBR[HTML] [ハイパーテキスト・マーク付け言語]] 4
の附属書には、リンク先文書を表示する[[枠]]を決定する
[Q[[RUBYB[現在の慣習] [current practice]]]]が説明されています。
- [[HTML 4]]
-- [CITE[B.8 notes-framesNotes on frames]]
<IW:HTML4:"appendix/notes.html#notes-frames">
[21]
= 対象名が >>22 の予約名であれば、その通りに。
= リンクが含まれている[[窓]]の中の枠を深さ優先探索
(名前完全一致) で。
= 前の窓から後ろの窓に向かって、見つかるまで手順 2. を実行。
= 新しい窓を作り、それに対象名を割当てる。
**
[18]
''Bug 105693 - W3C HTML 4.01 spec recommends we ignore non-alpha target'' <http://bugzilla.mozilla.org/show_bug.cgi?id=105693>
数字で始まるフレーム名や下線ではじまるフレーム名について。
;; これによると、 [CODE(HTML)[_new]] は [[NC4]] で導入されて [[Gecko]] にも引き継がれているのだそうで。
([[名無しさん]] [WEAK[2004-06-28 03:01:41 +00:00]])
[24]
[CITE[So, You Want A New Browser Window, Huh?]]
([[Joe Burns]] 著、2005年7月現在)
<http://www.htmlgoodies.com/tutorials/getting_started/article.php/3479481>
(他の内容から90年代後半に書かれたと推測)
> <A HREF="http://www.site.com/page.html"
TARGET="resource window">
Text Text Text</A>
[31] [CITE@en-US[Window Object 1.0]]
( ([TIME[2006-04-08 02:19:28 +09:00]] 版))
<http://www.w3.org/TR/Window/#embedding>
[32] [CITE@en[Web Applications 1.0 r8483 window.name should be the empty string when the name isn't set.]]
( ([TIME[2014-02-21 07:18:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8482&to=8483>
[29] [CITE[''''''[''''''whatwg'''''']'''''' Reserved browsing context names]]
( ([TIME[2010-11-16 08:44:20 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-November/029030.html>
[30] [CITE[''''''[''''''whatwg'''''']'''''' Reserved browsing context names]]
( ([TIME[2011-02-12 10:56:36 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-February/030414.html>