/
698.txt
225 lines (186 loc) · 10.9 KB
/
698.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
[4] [[IDL属性]]が[[内容属性]]を[DFN[[RUBYB[反映する]@en[reflect]]]]とは、 [[IDL属性]]の[[取得]]が[[内容属性]]の値を返し、
[[設定]]が[[内容属性]]の値を変更するようなものをいいます。
* 仕様書
[REFS[
- [5] [CITE@en-US[DOM Standard]] ([TIME[2012-12-26 22:14:50 +09:00]] 版) <http://dom.spec.whatwg.org/#concept-reflect>
- [6] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-12-31 05:55:07 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#reflect>
]REFS]
* 定義
[7] [[IDL属性]]のデータ型と[[内容属性]]の値の種類により、次のバリエーションがあります。
[FIG(list)[
- [[URL]] [SRC[>>6]]
- [[valid non-empty URL potentially surrounded by spaces]] [SRC[>>6]]
- [DEL[複数 [[URL]] [SRC[>>6]]]]
- [DFN[[RUBYB[[[既知の値のみに限定]]]@en[limited to only known values]]]]の[[列挙属性]] [SRC[>>6]]
- [[列挙属性]] [CODE(IDL)@en[[[DOMString]]?]] [SRC[>>6]]
- その他の文字列 ([CODE(DOMi)@en[[[DOMString]]]]) [SRC[>>5, >>6]]
- [CODE[[[boolean]]]]
- [DFN[[RUBYB[[[非負数のみに限定]]]@en[limited to only non-negative numbers]]]]の [CODE[[[long]]]] [SRC[>>6]]
- [CODE[[[long]]]] [SRC[>>6]]
- [DFN[[RUBYB[[[零より大きな非負数のみに限定]]]@en[limited to only non-negative numbers greater than zero]]]]の [CODE[[[unsigned long]]]] [SRC[>>6]]
- [CODE[[[unsigned long]]]] [SRC[>>6]]
- [DFN[[RUBYB[[[零より大きな数のみに限定]]]@en[limited to numbers greater than zero]]]]の [CODE[[[double]]]],
[CODE[[[unrestricted double]]]] [SRC[>>6]]
- [CODE[[[double]]]], [CODE[[[unrestricted double]]]] [SRC[>>6]]
- [CODE(DOMi)@en[[[DOMTokenList]]]], [DEL[[CODE(DOMi)@en[[[DOMSettableTokenList]]]]]] [SRC[>>6]]
- [CODE(DOMi)@en[[[HTMLElement]]]] [SRC[>>6]]
]FIG]
[18] 次の [[IDL属性]]は、[[反映]]の処理と当該属性専用の処理が組み合わさっています。
[FIG(list)[
- [CODE(DOMi)@en[[[HTMLScriptElement]]]] の [CODE(DOMa)@en[[[async]]]]
]FIG]
[57] 次の[[IDL属性]]は、一部または全部の処理が[[反映]]と似ていますが、
[[反映]]と異なる定義となっています。
[FIG(list)[
- [CODE(DOMa)@en[label][<menuitem label>]]
- [CODE(HTML)@en[<base href>]]
]FIG]
* URL として反映
[20] 次の[[内容属性]]を [[URL]] として[[反映]]する [[IDL属性]]があります。
[FIG(short list)[
- [CODE(HTML)@en[<blockquote cite>]]
- [CODE(HTML)@en[<q cite>]]
- [CODE(HTML)@en[<ins cite>]]
- [CODE(HTML)@en[<del cite>]]
- [CODE(HTML)@en[<script src>]]
- [CODE(HTML)@en[<applet object>]]
- [CODE(HTML)@en[<frame src>]]
- [CODE(HTML)@en[<frame longdesc>]] ([CODE(DOMa)@en[longDesc]])
- [CODE(HTML)@en[<iframe longdesc>]] ([CODE(DOMa)@en[longDesc]])
- [CODE(HTML)@en[<img longdesc>]] ([CODE(DOMa)@en[longDesc]])
- [CODE(HTML)@en[<img lowsrc>]]
- [CODE(HTML)@en[<applet codebase>]] ([CODE(DOMa)@en[codeBase]])
- [CODE(HTML)@en[<object codebase>]] ([CODE(DOMa)@en[codeBase]])
]FIG]
[HISTORY[
[53] かつては[[HTML要素]]の [CODE(HTMLa)@en[itemid]] [[属性]]もありました。
]HISTORY]
[39] これらの[[取得器]]は、[[内容属性]]の名前[VAR[属性名]]について、
次のようにしなければ[MUST[なりません]] [SRC[>>6]]。
[FIG(steps)[
= [41] [VAR[属性値]]を、[[文脈オブジェクト]]の[VAR[属性名]][[内容属性]]の値に設定します。
= [42] [VAR[属性値]]が [[null]] なら、
== [43] [[空文字列]]を返します。
= [44] それ以外なら、
== [45] [VAR[結果]]を、[[文脈オブジェクト]]の[F[節点文書]]に対して[VAR[属性値]]を[[URLの構文解析]]した結果に設定します。
== [46] [VAR[結果]]が[[失敗]]なら、
=== [47] [VAR[属性値]]を返します。
== [48] それ以外なら、
=== [49] [VAR[結果]]の[[URL文字列]]を返します。
]FIG]
[HISTORY[
[40] かつて[[仕様書]]では[VAR[属性値]]が [[null]] の時[[既定値]]を (あれば)
返すことになっていましたが、現在そのような例はありません。
]HISTORY]
[50] これらの[[設定器]]は、[[内容属性]]の名前[VAR[属性名]]について、
次のようにしなければ[MUST[なりません]] [SRC[>>6]]。
[FIG(steps)[
= [51] [VAR[入力]]を、与えられた値を[[文字列]]として解釈した結果に設定します。
= [52] [[文脈オブジェクト]]の[VAR[属性名]][[内容属性]]の値を、[VAR[入力]]に設定します。
]FIG]
[23] 次の[[内容属性]]を [[URL]] ([[valid non-empty URL potentially surrounded by spaces]])
として[[反映]]する [[IDL属性]]があります。
[FIG(short list)[
- [CODE(HTML)@en[<link href>]]
- [CODE(HTML)@en[<img src>]]
- [CODE(HTML)@en[<iframe src>]]
- [CODE(HTML)@en[<embed src>]]
- [CODE(HTML)@en[<object data>]]
- [CODE(HTML)@en[<video poster>]]
- [CODE(HTML)@en[<source src>]]
- [CODE(HTML)@en[<track src>]]
- [CODE(HTML)@en[<video src>]]
- [CODE(HTML)@en[<audio src>]]
- [CODE(HTML)@en[<input src>]]
- [CODE(HTML)@en[<form action>]]
- [CODE(HTML)@en[<button formaction>]] ([CODE(DOMa)@en[formAction]])
- [CODE(HTML)@en[<input formaction>]] ([CODE(DOMa)@en[formAction]])
- [CODE(HTML)@en[<menuitem icon>]]
]FIG]
[26] これらの[[取得器]]は、[[内容属性]]の名前[VAR[属性名]]について、
次のようにしなければ[MUST[なりません]] [SRC[>>6]]。
[FIG(steps)[
= [27] [VAR[属性値]]を、[[文脈オブジェクト]]の[VAR[属性名]][[内容属性]]の値に設定します。
= [28] [VAR[属性値]]が [[null]] か[[空文字列]]なら、
== [34] [[空文字列]]を返します。
= [35] それ以外なら、
== [29] [VAR[結果]]を、[[文脈オブジェクト]]の[F[節点文書]]に対して[VAR[属性値]]を[[URLの構文解析]]した結果に設定します。
== [30] [VAR[結果]]が[[失敗]]なら、
=== [33] [VAR[属性値]]を返します。
== [31] それ以外なら、
=== [32] [VAR[結果]]の[[URL文字列]]を返します。
]FIG]
[36] これらの[[設定器]]は、[[内容属性]]の名前[VAR[属性名]]について、
次のようにしなければ[MUST[なりません]] [SRC[>>6]]。
[FIG(steps)[
= [37] [VAR[入力]]を、与えられた値を[[文字列]]として解釈した結果に設定します。
= [38] [[文脈オブジェクト]]の[VAR[属性名]][[内容属性]]の値を、[VAR[入力]]に設定します。
]FIG]
[21] 次の[[内容属性]]は、[[URL分解属性]]があります。
[FIG(short list)[
- [CODE(HTML)@en[<a href>]]
- [CODE(HTML)@en[<area href>]]
]FIG]
;; [22] [[仕様書]]の用語としては[[反映]]とは異なりますが、
その特殊形に当たります。 [CODE(DOMi)@en[URLUtils]] 参照。
* 歴史
[3] 「reflect」という言葉を使って明示的に[[IDL属性]]と[[内容属性]]の関係を明確に定義したのはおそらく [[HTML5]]
が最初です。それ以前の [[DOM1 HTML]] や [[DOM2 HTML]] では [[IDL属性]]の説明から [[HTML4]]
へリンクしていただけで、相互の関係を完全に明確には定義していませんでした。
[REFS[
- [1] [CITE[IRC logs: freenode / #whatwg / 20101026]]
( ([TIME[2010-11-07 15:25:47 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20101026#l-510>
- [2] [CITE@en[Web Applications 1.0 r7129 Update to take into account WebIDL's 'double' vs 'unrestricted double' change.]]
( ([TIME[2012-06-12 08:07:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7128&to=7129>
]REFS]
[8] その後 [[DOM Standard]] も (文字列の) [[reflect]] を定義しました。
[9] [[SVG]] と [[MathML]] にも [[reflect]] 相当の [[IDL属性]]がありますが、 [[DOM HTML]]
スタイルの古い曖昧な説明になっていて、「reflect」とは言っていません。
[10] [[Atom DOM]] も「reflect」を定義しています。
[REFS[
- [11] [CITE@en[Re: Adding ''''''[''''''Reflect'''''']'''''' to WebIDL?]]
( ([[Ian Hickson]] 著, [TIME[2014-08-08 06:47:53 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-script-coord/2014JulSep/0168.html>
- [12] [CITE@en[Web Applications 1.0 r8727 Make .crossOrigin = null remove the content attribute.]] ([TIME[2014-08-29 07:00:00 +09:00]] 版) <http://html5.org/r/8727>
]REFS]
[13] [CITE@en[Remove HTMLAreaElement.hreflang and .type · Issue #232 · whatwg/html]]
([TIME[2015-10-08 11:30:19 +09:00]] 版)
<https://github.com/whatwg/html/issues/232>
[14] [CITE@en[Fix #477: Unused spec content in common DOM interfaces · whatwg/html@06c2a32]]
([TIME[2016-02-03 12:18:31 +09:00]] 版)
<https://github.com/whatwg/html/commit/06c2a3225194e61990f4930e7eb5887de28dd58a>
[15] [CITE@en[Fix #358: use DOMTokenList exclusively · whatwg/html@98183f9]]
([TIME[2016-02-04 18:46:23 +09:00]] 版)
<https://github.com/whatwg/html/commit/98183f98c609d61e508bbec46b7ab86d37b99b47>
[16] [CITE@en[URLs are parsed and produce records · whatwg/html@30bc255]]
([TIME[2016-02-14 22:52:45 +09:00]] 版)
<https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44>
[17] [CITE@en[Adding ''''''[''''''SameObject'''''']'''''' to DOMTokenLists · whatwg/html@ec1dc4d]]
([TIME[2016-02-18 11:09:35 +09:00]] 版)
<https://github.com/whatwg/html/commit/ec1dc4d4571c61cf0c0dfe3e562898635886b412>
[19] [CITE@en[Fix reflect and its callers · whatwg/dom@75303c5]]
([TIME[2016-03-02 15:22:59 +09:00]] 版)
<https://github.com/whatwg/dom/commit/75303c5158db058fcd3bd21ac1ddc95bb2a18f9e>
[24] [CITE@en[Fix #561: Reflecting a broken URL should return the unparsed value · whatwg/html@f9567cd]]
([TIME[2016-03-16 15:35:19 +09:00]] 版)
<https://github.com/whatwg/html/commit/f9567cd22f506d9a872cd6240555fb047fc75c67>
[25] [CITE@en[Fix #859: Special-case empty string in reflect as URL · whatwg/html@f09dbee]]
([TIME[2016-03-16 15:35:25 +09:00]] 版)
<https://github.com/whatwg/html/commit/f09dbee68524c5ca8fd062a234e339d11c65e3b5>
[54] [CITE@en[Fix #875: Editorial: Remove unused 'default value' in reflect as URL · whatwg/html@b2084ec]]
([TIME[2016-03-17 16:53:41 +09:00]] 版)
<https://github.com/whatwg/html/commit/b2084ec2f3818c0e8433dd5525b118b033b18294>
[55] [CITE@en[Editorial: synchronize with the DOM Standard · whatwg/html@21c6ec7]]
([TIME[2016-03-20 17:53:56 +09:00]] 版)
<https://github.com/whatwg/html/commit/21c6ec77594eb89b836d4872222f5916910967fd>
[56] [CITE@en[Allow <menuitem> to have children giving the label · whatwg/html@8fdccb5]]
([TIME[2016-04-16 22:11:51 +09:00]] 版)
<https://github.com/whatwg/html/commit/8fdccb55e40a36449ae6011f9960cb09c1da0db7>
[58] [CITE@en[Reflect USVString IDL attributes for URLs as well as DOMString ones · whatwg/html@2ced624]]
([TIME[2016-04-23 16:30:04 +09:00]] 版)
<https://github.com/whatwg/html/commit/2ced6248d16e5a742e324ba3f506cc6d179b0414>
[59] [CITE@en[Hyperlink term "reflect" for <script>'s event and htmlFor · whatwg/html@9ab42dd]]
([TIME[2016-04-25 11:27:11 +09:00]] 版)
<https://github.com/whatwg/html/commit/9ab42dd45bcaa23523e5a196e5614449cf979d94>