-
Notifications
You must be signed in to change notification settings - Fork 4
/
820.txt
109 lines (88 loc) · 5.49 KB
/
820.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
[5] [[オブジェクト]]が [DFN[[[live]]]] である ([DFN[[[生きている]]]])
とは、その操作の対象となるデータが [[DOM]]
の変化に伴い随時変化することをいいます。[DFN[[RUBYB[[[静的]]]@en[static]]]]であるとは、
[[live]] ではなく、特定の時点でのスナップショットを対象とすることをいいます。
* 仕様書
[REFS[
- [13] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-07-20 22:41:10 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#live>
- [3] [CITE@en-US[DOM Standard]] ([TIME[2014-06-23 14:49:32 +09:00]] 版) <http://dom.spec.whatwg.org/#concept-collection-live>
- [4] [CITE@en-US[DOM Standard]] ([TIME[2014-06-23 14:49:32 +09:00]] 版) <http://dom.spec.whatwg.org/#concept-collection-static>
- [9] [CITE@en-US[DOM Standard]] ([TIME[2014-06-23 14:49:32 +09:00]] 版) <http://dom.spec.whatwg.org/#dom-element-attributes>
]REFS]
* 定義
[7] [[オブジェクト]]が [[live]] であるなら、ある時点での[[スナップショット]]ではなく、
実際の裏のデータを操作しなければ[['''なりません''']] [SRC[>>13, >>3]]。
;; [14] [[HTML Standard]] は任意の[[DOM]] [[オブジェクト]]に対して「live」
を定義しています。 [[DOM Standard]] は[[コレクション]]について「live」と「static」
を定義しています。
[6] [[コレクション]]は、 [[live]] または[[静的]]のいずれかです [SRC[>>3, >>4]]。
仕様上明記されていない限り [[live]] です [SRC[>>3]]。
[10] [[read only array]] が [[live]] の時も、同様に実際のデータを反映させなければ[['''なりません''']]
[SRC[>>9]]。
[EG[
[8] 例えば、
[PRE(JS code)[
list = document.getElementsByTagName ('p');
console.log (list.length);
document.body.appendChild (document.createElement ('p'));
console.log (list.length);
]PRE]
... で表示される [CODE(DOMa)@en[[[length]]]] は、1回目より2回目の方が1大きな値となります。
]EG]
* live なオブジェクトの一覧
[11] [[live]] なオブジェクトには次のものがあります。これらは対象となる [[DOM]]
や [[CSSOM]]、[[媒体]]、[[DnD]] 対象データに変更が加わると、即座にその変更が反映されるものです。
[FIG(list)[
- [CODE(DOMi)@en[[[NodeList]]]] (一部を除く) [SRC[[[DOM Standard]], [[HTML Standard]]]]
- [CODE(DOMi)@en[[[HTMLCollection]]]] [SRC[[[DOM Standard]], [[HTML Standard]]]]
- [CODE(DOMi)@en[[[NamedNodeMap]]]] [SRC[[[AttrExodus]]]]
- [CODE(DOMi)@en[[[NodeIterator]]]] [SRC[[[DOM Standard]]]]
- [[read only array]]
-- [CODE(DOMi)@en[[[Element]]]] [CODE(DOMa)@en[[[attributes]]]] [SRC[[[DOM Standard]]]]
-- [CODE(DOMi)@en[[[DataTransfer]]]] [CODE(DOMa)@en[[[types]]]] [SRC[[[HTML Standard]]]]
-- [CODE(DOMi)@en[[[HTMLPropertiesCollection]]]] [CODE(DOMa)@en[[[names]]]] [SRC[[[HTML Standard]]]]
-- [CODE(DOMa)@en[[[styleSheetSetes]]]] [SRC[[[CSSOM]]]]
- [CODE(DOMi)@en[[[VideoTrackList]]]] [SRC[[[HTML Standard]]]]
- [CODE(DOMi)@en[[[AudioTrackList]]]] [SRC[[[HTML Standard]]]]
- [CODE(DOMi)@en[[[TextTrackCueList]]]] [SRC[[[HTML Standard]]]]
- [CODE(DOMi)@en[[[ValidityState]]]] [SRC[[[HTML Standard]]]]
- [CODE(DOMi)@en[[[FileList]]]] [SRC[[[HTML Standard]]]]
- [CODE(DOMi)@en[[[CSSRuleList]]]] [SRC[[[CSSOM]]]]
- [CODE(DOMi)@en[[[CSSStyleDeclaration]]]] [SRC[[[CSSOM]]]]
]FIG]
[12] 定義上は [[live]] とはされていませんが、 [CODE(DOMi)@en[[[Range]]]],
[CODE(DOMi)@en[[[DOMStringMap]]]], [CODE(DOMi)@en[[[DOMTokenList]]]],
[CODE(DOMi)@en[[[DOMSettableTokenList]]]]
も対象となる[[木]]への変更がリアルタイムで反映されます。
[18] [CODE(DOMi)@en[[[XPathResult]]]] は [[live]] でも[[静的]]でもなく、
[[文書木]]が変更されると無効状態になります。
[15] [CODE(HTMLe)@en[[[canvas]]]] に関わる次の2つの[[オブジェクト]]も [[live]]
とされていますが、これらの[[オブジェクト]]への変更が [CODE(HTMLe)@en[[[canvas]]]]
側に反映されることを意味しています。
[FIG(list)[
- [CODE(DOMi)@en[[[CanvasPattern]]]] [SRC[[[HTML Standard]]]]
- [CODE(DOMi)@en[[[CanvasGradient]]]] [SRC[[[HTML Standard]]]]
]FIG]
[16] [[画像写像]]も [[live]] とされていますが、[[スクリプト]]から直接アクセスできない内部状態なので、
他のものとは性質が違います。 ([[表モデル]]や[[文書アウトライン]]なども同様に [[live]]
と呼んでも良さそうなものですが、仕様書上 [[live]] とは明記されていません。)
[FIG(list)[
- [[画像写像]] [SRC[[[HTML Standard]]]]
]FIG]
* 歴史
[REFS[
- [1] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-03-18 21:24:19 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4856&to=4857>
- [2] [CITE[IRC logs: freenode / #whatwg / 20140204]]
( ([TIME[2014-02-05 20:30:59 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140204>
]REFS]
* 関連
[17] あるオブジェクトに付随する部分オブジェクトとみなせるような場合には、
[[live]] とは呼ばれないようです。例えば [CODE(HTMLe)@en[[[canvas]]]]
[[要素]]に対する [CODE(DOMi)@en[[[CanvasRenderingContext2d]]]]
は [[live]] であるとはいわれていません。 [CODE(DOMi)@en[[[Window]]]]
に対する [CODE(DOMi)@en[[[Screen]]]] や、 [CODE(DOMi)@en[[[XMLHttpRequest]]]]
に対する [CODE(DOMi)@en[[[XMLHttpRequestUpload]]]] は [[live]]
とはいわれていません。