/
221.txt
67 lines (51 loc) · 3.11 KB
/
221.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
[11] [[DOM木]]上の[[親節点]]と[[子節点]]の[[親子]]関係を解消することを、
[[子節点]]の[DFN[[RUBYB[[[削除]]]@en[remove]]]]といいます。
[12] [[節点]]を[[削除]]しても、[[節点]]が消滅するわけではありません。
何らかの[[参照]]が存在する限りは旧[[親節点]]も旧[[子節点]]も[[ごみ収集]]されずに存続します。
* 仕様書
[REFS[
- [7] [CITE@en-US[DOM Standard]] ([TIME[2014-06-23 14:49:32 +09:00]] 版) <http://dom.spec.whatwg.org/#concept-node-remove>
- [1] [CITE@en-US[DOM Standard]] ([TIME[2014-06-23 14:49:32 +09:00]] 版) <http://dom.spec.whatwg.org/#node-is-removed>
]REFS]
* 削除
[6] [[DOM Standard]] 仕様書上の操作[DFN[[RUBYB[[[削除]]]@en[remove]]]] [SRC[>>7]]
は次の箇所から呼び出されています。
[FIG(list short)[
- [[pre-insert]]
- [[replace]]
- [[replace all]]
- [[pre-remove]]
- [CODE(DOMi)@en[[[ChildNode]]]] [CODE(DOMm)@en[[[remove]]]]
- [CODE(DOMm)@en[[[adoptNode]]]]
- [[adopt]]
- [CODE(DOMm)@en[[[deleteContents]]]]
- [[範囲の挿入]]
]FIG]
[9] この操作では、[[DOM木]]上の[[親節点]]の[[子供]]のリストからの[[節点]]の[[削除]]に加えて、
関係する[[範囲]]の状態の変更や、 [CODE(DOMi)@en[[[MutationObserver]]]]
の実行の準備も行われます ([CODE(DOMi)@en[[[MutationObserver]]]] の実行そのものはこの時点ではなされません)。
[8] 当該[[節点]]やその[[子孫]]が含まれる[[コレクション]]からの削除や、
[CODE(DOMi)@en[[[NodeIterator]]]] の[[イテレーターコレクション]]からの[[節点]]の[[削除]]に伴う[[参照節点]]の変更は、
この操作のタイミングで行う (ように見える) べきであると思われます。
[10] [[節点の削除]] (>>2) も呼び出されます。
* 節点の削除
[2] [[節点]]が他の[[節点]]の[[子供]]から[[削除]]されると、[[フック]][DFN[[RUBYB[[[節点の削除]]]@en[node is removed]]]]
[SRC[>>1]] が呼び出されます。
;; [3] [[DOM Standard]] 上の[[アルゴリズム]]である [[replace]], [[replace all]],
[[remove]] から呼び出されます。
[4] この[[フック]]によって次の[[節点]]が何らかの処理を行います。
[FIG(list)[
- [CODE(HTMLe)@en[[[option]]]] [SRC[[[HTML Standard]]]]
]FIG]
[5] 仕様上明確には規定されていませんが、次の動作もこの[[フック]]のタイミングで処理されると思われます。
[FIG(list)[
- [[要素の文書からの削除]] [SRC[[[HTML Standard]]]]
- [CODE(HTMLe)@en[[[img]]]] ([CODE(HTMLe)@en[[[picture]]]]) [SRC[[[HTML Standard]]]]
- [CODE(HTMLe)@en[[[source]]]] ([CODE(HTMLe)@en[[[picture]]]]) [SRC[[[HTML Standard]]]]
- [CODE(HTMLe)@en[[[source]]]] ([[媒体要素]]) [SRC[[[HTML Standard]]]]
- [[画像写像]] [SRC[[[HTML Standard]]]]
- [CODE(HTMLe)@en[[[style]]]] の[[子孫]] [SRC[[[HTML Standard]]]]
- [CODE(HTMLe)@en[[[track]]]] [SRC[[[HTML Standard]]]]
- [CODE(XML)@en[[[<?xml-stylesheet?>]]]] [SRC[[[CSSOM]]]]
- [[フォーム被関連付け要素]] [SRC[[[HTML Standard]]]]
]FIG]