/
952.txt
136 lines (102 loc) · 6.8 KB
/
952.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
[28] [[文書]]や[[構文解析器]]を [DFN[[[abort]]]] すると、
[[fetch]] や[[構文解析器]]を中断することができます。
abort 操作は何種類かあります。
* 仕様書
[REFS[
- [4] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#abort-a-document>
- [10] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#abort-a-parser>
- [36] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#dom-window-stop>
]REFS]
* 利用者インターフェイス
[6] [[利用者]]に[[文書]]に関する次の[[タスク]]を追加する方法を提供して構いません [SRC[>>4]]。
[FIG(list members)[
[FIGCAPTION[
[[タスク]]
]FIGCAPTION]
:処理:
[FIG(steps)[
= [[文書]]が[[活性文書]]なら、[[単純イベントを発火]]する[['''べきです''']]。
[FIG(list members short)[
[FIGCAPTION[
[[単純イベント]]
]FIGCAPTION]
:[[イベント型]]:[CODE(DOMi)@en[[[abort]]]]
:[[対象]]:[[文書]]の [CODE(DOMi)@en[[[Window]]]]
]FIG]
= [[文書のabort]]を実行します。
]FIG]
]FIG]
;; [8] [[タスク源]]は不明です。
;; [7] この「[DFN[[[中止]]]]」 (「[DFN[[[停止]]]]」) 機能は、
かつては[[メニューバー]]の[[ボタン]]などとして提供するのが普通でした。
現在は[[再読込]]ボタンが [[navigate]] 中のみ[[中止]]ボタンに差し替わることが多くなっています。
[38] [[Webブラウザー]]は [CODE(HTTP)@en[[[Refresh]]]] による遷移を拒む手段を提供することを認めています。
[[中止]]ボタンはその機能も持っているかもしれません。
;; [40] かつては[[アニメーションGIF]]の再生停止機能も[[中止]]ボタンが持っている
[[Webブラウザー]]もありました。
* [CODE(DOMi)@en[Window]] インターフェイス [CODE(DOMm)@en[stop]] メソッド
[37] [CODE(DOMi)@en[[[Window]]]] [[インターフェイス]]の
[DFN[[CODE(DOMm)@en[[[stop]]]]]] [[メソッド]]は、
次のようにしなければ[['''なりません''']] [SRC[>>36]]。
[FIG(steps)[
= [[文脈オブジェクト]]の[[閲覧文脈]]について [[navigate]] を実行中で、
それが [[unload a document]] を実行中でないなら、
== [[navigate]] を取り消します。
== [[文脈オブジェクト]]の[[閲覧文脈]]の[[活性文書]]の[[文書のabort]]を実行します。
]FIG]
* 文書の abort
[5] [[文書]]を [DFN[[[abort]]]] するとは、次のようにしなければ[['''なりません''']]
[SRC[>>4]]。
[FIG(steps)[
= [11] すべての[[子供閲覧文脈]]の[[活性文書]]を [[abort]] します。
= [12] 前項の [[abort]] によりいずれかの[[文書]]の [[''salvageable'']] が[[偽]]となったら、
[[文書]]の [[''salvageable'']] も[[偽]]に設定します。
= [13] [[文書]]における [[fetch]] があれば、すべて停止させ、関係する[[タスク]]を捨て、
[[ネットワーク]]から受信したデータがあっても捨てます。
これらがあった場合には、 [[文書]]の [[''salvageable'']] を[[偽]]に設定します。
= [14] [[文書]]が[[活性構文解析器]]を持っていれば、これを [[abort]] し、
[[文書]]の [[''salvageable'']] を[[偽]]に設定します。
]FIG]
[29] 「停止」ボタンは [[abort]] を呼び出します。
[30] [CODE(JS)@en[[[window.stop]]]] は [[abort]] を呼び出すことがあります。
[31] [[文書を捨てる]]際に [[abort]] が呼び出されます。
[32] [[navigate]] が [[abort]] を呼び出すことがあります。
[33] [CODE(JS)@en[[[document.open]]]] が [[abort]] を呼び出すことがあります。
* 構文解析器の abort
[9] [DFN[[RUBYB[[[構文解析器]]の [[abort]]]@en[abort a parser]]]]は、
次のようにしなければ[['''なりません''']]。
[FIG(steps)[
= [15] [[入力ストリーム]]の現在の未処理の内容および今後追加されるであろう内容を破棄します [SRC[>>10]]。
= [16] [[文書]]の[[現在文書準備度]]を [CODE[[[interactive]]]] に設定します [SRC[>>10]]。
= [17] [[開いている要素のスタック]]からすべての[[節点]]を [[pop]] します [SRC[>>10]]。
= [18] [[文書]]の[[現在文書準備度]]を [CODE[[[complete]]]] に設定します [SRC[>>10]]。
= [24] [[構文解析器]]の [[abort]] 済みフラグを設定します。
]FIG]
;; [19] [[pop]] は副作用を持つことがあります。[[開いている要素のスタック]]を参照。
([[スクリプト]]は実行されないので、[[現在文書準備度]]が [CODE[[[interactive]]]]
な状態は観測できない気がします。)
;; [25] [[abort]] 済みフラグは、[[活性構文解析器]]かどうかの判定に用いられます。
[20] [[構文解析器]]の [[abort]] は、 [[HTML構文解析器]]でも [[XML構文解析器]]でも実行できます。
[21] [[構文解析器]]の [[abort]] は、[[文書のabort]] から呼び出されます。
[22] [[構文解析器]]の [[abort]] は、[[構文解析器]]が[[構文解析エラー]]を検出した時に呼び出すこともできます。
;; [23] これは[[適合性検査器]]など特別な用途を想定していて、[[Webブラウザー]]などでは不適切な動作です。
;; [39] [[abort]] は、 [[stops parsing]] により正常終了しない場合にかわりに呼び出されます。
[26] [[abort]] 済みフラグは、[[活性構文解析器]]かどうかの判定で用いられます。
[27] [[abort]] 済みフラグは、[[HTML構文解析器]]が [CODE(HTMLe)@en[[[script]]]]
[[終了タグ]]で[[スクリプト]]を実行するかに影響します。
* 歴史
[1] [CITE@en-US[Document Object Model Load and Save]]
([TIME[2003-06-19 07:22:01 +09:00]] 版)
<http://www.w3.org/TR/2003/WD-DOM-Level-3-LS-20030619/load-save.html#LS-DocumentLS-abort>
[2] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-09-30 00:09:23 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4038&to=4039>
[3] [CITE@en[Web Applications 1.0 r5643 Define how location.href='foo' aborts parsing.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10625]]
( ([TIME[2010-10-23 08:07:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5642&to=5643>
[34] [CITE[''''''[''''''whatwg'''''']'''''' Firing all the "the end" messages on abort]]
( ([TIME[2012-12-01 11:57:56 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-November/038207.html>
[35] [CITE@en[Web Applications 1.0 r8142 Explain how window.stop() affects window.stop()]]
( ([TIME[2013-08-13 08:36:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8141&to=8142>