-
Notifications
You must be signed in to change notification settings - Fork 4
/
832.txt
383 lines (319 loc) · 22.4 KB
/
832.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
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
[134] [[Web]] において実行されるものには、いくつかの種類があります。
[FIG(list middle)[
- [[スクリプト]]
-- [[古典スクリプト]]
-- [[モジュールスクリプト]]
- [[関数]]
-- [[著者]]の[[関数]]
--- [[コールバック関数]]
--- [[利用者オブジェクト]]の[[演算]]
--- [[利用者オブジェクト]]の[[属性値]]の[[取得]]
--- [[利用者オブジェクト]]の[[属性値]]の[[設定]]
--- [[約束コールバック]]
-- [[プラットフォーム][プラットフォームオブジェクト]]の[[関数]]
-- [[プラットフォーム][プラットフォームオブジェクト]]の[[取得器]]
-- [[プラットフォーム][プラットフォームオブジェクト]]の[[設定器]]
]FIG]
* 仕様書
[REFS[
- [99] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-08-05 16:28:45 +09:00]]) <https://html.spec.whatwg.org/#performing-structured-clones-from-other-specifications>
- [22] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <https://www.whatwg.org/specs/web-apps/current-work/#jump-to-a-code-entry-point>
- [68] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-24 02:49:49 +09:00]] 版) <https://html.spec.whatwg.org/#import-scripts-into-worker-global-scope>
- [164] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-27 03:13:07 +09:00]] 版) <https://html.spec.whatwg.org/#running-script>
- [76] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-12-22 10:28:15 +09:00]] 版) <https://html.spec.whatwg.org/#script-corresponding-to-the-running-execution-context>
- [62] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-08-01 13:15:24 +09:00]]) <https://html.spec.whatwg.org/#concept-incumbent-everything>
- [303] [CITE[Web IDL (Second Edition)]] ([TIME[2015-02-03 13:44:14 +09:00]] 版) <http://heycam.github.io/webidl/#es-invoking-callback-functions>
- [276] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-12-22 10:28:15 +09:00]] 版) <https://html.spec.whatwg.org/#enqueuejob(queuename,-job,-arguments)>
]REFS]
* 古典スクリプトの実行
[23] [DFN[[RUBYB[古典スクリプトの実行]@en[run a classic script]]]] [SRC[>>22]]
(旧[DFN[[RUBYB[[[コード入口点に飛ぶ]]]@en[jump to a code entry-point]]]])
は、次の[[引数]]を持つ手続きです。
[FIG(list members)[
: [VAR[スクリプト]] : [[古典スクリプト]]。
: [VAR[[RUBYB[エラーを再度投げる]@en[rethrow errors]]]]フラグ :
[[例外]]が投げられた時に、それを呼び出し元の[[スクリプト]]に伝播させるべきかどうかを指定します。
基本的には[[偽]]で、[[例外]]は[[例外の報告]]へと回されますが、
[CODE(DOMm)@en[[[importScripts]]]] では呼び出し元に引き渡されます。
]FIG]
[45] 次のようにしなければ[['''なりません''']] [SRC[>>22]]。
[FIG(steps)[
= [78] [VAR[設定群オブジェクト]]を、[VAR[スクリプト]]の[F[[[設定群オブジェクト]]]]に設定します。
= [150] [VAR[設定群オブジェクト]]について[[スクリプトを実行できるか検査]]した結果が「実行しない」なら、
== [146] [CODE(JS)@en[undefined]] を返し、ここで停止します。
= [151] [VAR[設定群オブジェクト]]について[[スクリプトを実行する準備]]をします。
= [25] [VAR[結果]]を、 [CODE[[[ParseScript]]([VAR[スクリプト]]の[F[[[ソーステキスト]]]], [VAR[設定群オブジェクト]]の[F[[[Realm]]]], [VAR[スクリプト]])]]
に設定します。
= [82] [VAR[結果]]が[[エラー]]の [[List]] なら、
== [24] [VAR[結果]]を、[VAR[結果]]の最初の要素に設定します。
== ☆
= [87] それ以外なら、
== [84] [VAR[状態]]を、 [CODE[[[ScriptEvaluation]]([VAR[結果]])]] に設定します。
== [52] [VAR[状態]]が[[走っているスクリプトの実行中断]]なら、
=== ●
== [85] それ以外で、 [VAR[状態]]が [[abrupt completion]] なら、
=== [86] [VAR[結果]]を、[CODE[[VAR[状態]].[F(ss)[value]]]] に設定します。
=== ☆
== [83] それ以外なら、
=== ▲
= [53] ●の場合、
== [63] [VAR[エラーを再度投げる]]フラグが設定されているなら、
=== [54] [[走っているスクリプトの実行中断]]をします。 [SRC[>>68]]
= [152] ☆の場合、
== [48] [VAR[エラーを再度投げる]]フラグが設定されているなら、
=== [107] [VAR[スクリプト]]の[F[[[エラーミュート]]]]フラグが設定されていれば、
==== [108] [CODE(DOMe)@en[[[NetworkError]]]] [[例外]]を[[投げ]]ます。
=== [106] それ以外なら、
==== [56] [VAR[スクリプト]]について[VAR[結果]]の[[例外を報告]]します。
= [26] [VAR[設定群オブジェクト]]について[[スクリプトを走らせた後の片付け]]をします。
= [81] ▲なら、
== [88] [CODE[[VAR[状態]].[F(ss)[value]]]] を返します。
= [89] それ以外なら、
== [109] 何も返しません。
]FIG]
;; [79] この手続きが返す値が使われるのは、 [CODE(URI)@en[[[javascript:]]]]
[[URL]] の実行の時だけのようです。
[135] [[古典スクリプトの実行]]は、[[古典スクリプトの作成]]の後、適当なタイミングで行われます。
* モジュールスクリプトの実行
[80] [[モジュールスクリプト]][VAR[スクリプト]]について[DFN[[RUBYB[モジュールスクリプトを実行]@en[run a module script]]]]するとは、
次のようにしなければ[['''なりません''']] [SRC[>>22]]。
[FIG(steps)[
= [90] [VAR[設定群オブジェクト]]を、[VAR[スクリプト]]の[F[設定群オブジェクト]]に設定します。
= [91] [VAR[設定群オブジェクト]]について[[スクリプトを実行できるか検査]]した結果が「実行しない」なら、
== [138] ここで停止します。
= [139] [VAR[スクリプト]]の[F[実現値化状態]]が [CODE[errored][実現値化状態]] なら、
== [140] [VAR[スクリプト]]の[F[実現値化エラー]]を用いて[VAR[スクリプト]]に関する[[例外を報告]]します。
== [141] ここで停止します。
= [92] [VAR[記録]]を、[VAR[スクリプト]]の[F[[[モジュール記録]]]]に設定します。
= [113] [VAR[設定群オブジェクト]]について[[スクリプトを実行する準備]]をします。
= [114] [VAR[評価状態]]を、[CODE[[VAR[記録]].[CODE[[[ModuleEvalution]]]]()]]
に設定します。
= [115] [VAR[評価状態]]が[[走っているスクリプトの実行中断]]ではなく、
[[abrupt completion]] であるなら、
== [116] [VAR[スクリプト]]について[CODE[[VAR[評価状態]].[F(ss)[value]]]]の[[例外を報告]]します。
= [153] [VAR[設定群オブジェクト]]について[[スクリプトを走らせた後の片付け]]をします。
]FIG]
* コールバック関数の実行
[3] [[コールバック関数]]の[DFN[[RUBYB[呼び出し]@en[invoke]]]] [SRC[>>303]] は、
次の[[引数]]に関する操作です。
[FIG(list members)[
: [VAR[呼び出し可能]] : [[コールバック関数]]として使用する、[[コールバック関数型]]の値。
: [VAR[this]] : [[コールバック関数]]の [CODE(JS)@en[this]] として使う値。
[[既定値]]は [CODE(JS)@en[undefined]] [SRC[>>303]]。
: [VAR[引数リスト]] : [[コールバック関数]]の[[引数]]の[[リスト]]。
各値は、[[IDL値]]か、省略を表す特殊値「[RUBYB[なし]@en[missing]]」のいずれかです [SRC[>>303]]。
]FIG]
[4] 次のようにします [SRC[>>303]]。
[FIG(steps)[
= [17] [VAR[F]] を、[VAR[呼び出し可能]]の [[JavaScript]] [[オブジェクト]]に設定します。
= [18] [VAR[F]] に [CODE[IsCallable]] を適用した結果が[[偽]]なら、
== [7] [VAR[呼び出し可能]]の[F[返り型]]が [CODE(IDL)@en[void]] なら、
=== [10] ここで停止します。
== [13] それ以外なら、
=== [15] [CODE(JS)@en[undefined]] を[VAR[呼び出し可能]]の[F[返り型]]に[[変換][変換 (WebIDL)]]した結果を返し、ここで停止します。
= [5] [VAR[realm]] を、 [VAR[F]] の[F[Realm]]に設定します。
= [16] [VAR[関連設定群]]を、 [VAR[realm]] の[F[設定群オブジェクト]]に設定します。
= [19] [VAR[蓄積設定群]]を、[VAR[値]]の[F[コールバック文脈]]に設定します。
= [20] [VAR[関連設定群]]について[[スクリプトを走らせる準備]]を実行します。
= [21] [VAR[蓄積設定群]]について[[コールバック実行の準備]]を実行します。
= [42] [VAR[リスト]]を、空の[[リスト]]に設定します。
= [59] [VAR[数]]を、 [N[0]] に設定します。
= [60] [VAR[引数リスト]]の各値[VAR[値]]について、順に、
== [27] [VAR[値]]が「なし」なら、
=== [28] [VAR[リスト]]の末尾に [CODE(JS)@en[undefined]] を追加します。
== [29] それ以外なら、
=== [31] [VAR[結果]]を、[VAR[値]]を [[JavaScript]] に[[変換][変換 (WebIDL)]]した結果に設定します。
=== [32] [VAR[結果]]が [[abrupt completion]] なら、
==== [33] >>43 に飛びます。
=== [34] それ以外なら、
==== [35] [VAR[リスト]]の末尾に[VAR[結果]]の[F(ss)[値]]を追加します。
=== [37] [VAR[数]]を[[インクリメント]]します。
= [38] [VAR[リスト]]の末尾の値を削除して要素数が[VAR[数]]となるようにします。
= [39] [VAR[結果]]を、[CODE[[[Call]]([VAR[F]], [VAR[this]], [VAR[リスト]])]]
の結果に設定します。
= [40] [VAR[結果]]が [[abrupt completion]] 以外なら、
== [41] [VAR[結果]]を、[VAR[結果]]の[F(ss)[値]]を[VAR[呼び出し可能]]の[F[返り型]]に[[変換][変換 (WebIDL)]]した結果に設定します。
= [57] [VAR[蓄積設定群]]について[[コールバックを走らせた後の片付け]]を実行します。
= [43] [VAR[関連設定群]]について[[スクリプトを走らせた後の片付け]]を実行します。
= [44] [VAR[結果]]が [[abrupt completion]] なら、
== [47] [VAR[呼び出し可能]]の[F[返り型]]が[[約束型]]なら、
=== [50] [VAR[結果]]を、[CODE[[[%Promise%]].[[reject]]]] の[[初期値]]を呼び出した結果に設定します。
[FIG(list members)[
: [VAR[[CODE(JS)[this]]]] : [CODE[%Promise%]]
: [VAR[引数リスト]] :
[FIG(list)[
= [VAR[結果]]の[F(ss)[値]]
]FIG]
]FIG]
=== [51] [VAR[結果]]を[VAR[返り型]]に[[変換][変換 (WebIDL)]]した結果を返します。
== [48] それ以外なら、
=== [49] [VAR[結果]]を返します。
= [45] それ以外なら、
== [46] [VAR[結果]]を返します。
]FIG]
[9] つまり[[コールバック関数]]を実行するものですが、
[[JavaScript]] と [[Web IDL]] の値の変換、
[[JavaScript実行文脈スタック]]の操作、
[[例外]]の [CODE(DOMi)@en[[[Promise]]]] 化を適宜処理するものです。
[11] [F(ss)[[[Call]]]] の呼び出しは、
途中で[[走っているスクリプトの実行中断]]が発生することがあります。
[58] 似たような処理が[[利用者オブジェクト]]についても規定されています。
[61] [[コールバック関数の呼び出し]]は、次の場面で行われます。
[FIG(list)[
- [[Web IDL]] [[iterator]] の [CODE(IDL)@en[[[forEach]]]] [SRC[[[Web IDL]]]]
- [[イベントハンドラー]]の呼び出し [SRC[[[HTML Standard]]]]
- [[タイマー]]の呼び出し [SRC[[[HTML Standard]]]]
- [[アニメーションフレームコールバック]]の呼び出し [SRC[[[HTML Standard]]]]
- [[カスタム要素反応群の呼び出し]]からの[[コールバック反応]]の呼び出し [SRC[[[HTML Standard]]]]
- [CODE(DOMm)@en[toBlob]] の [CODE(DOMi)@en[BlobCallback]] の呼び出し
- [[変異観察器]]
;; [8] [[Geolocation API]] の[[コールバック]]、
[CODE(DOMm)@en[[[getAsString]]]] の[[コールバック]]、
[CODE(DOMi)@en[[[PortCollection]]]] の [CODE(DOMm)@en[[[iterate]]]] の[[コールバック]]、
[CODE(DOMi)@en[[[RTCPeerConnection]]]] の[[コールバック]]、
[CODE(DOMi)@en[[[NSResolver]]]] でも同様の処理を挟む必要がありそうですが、
明文化されていません。
[HISTORY[
- [CODE(DOMm)@en[setImmediate]]
]HISTORY]
]FIG]
;; [12] [CODE(JS)@en[[[Promise]]]] の[[コールバック]]は、
[[JavaScriptジョブの実行]]で処理されます。
;; [14] [[カスタム要素構築器]]は、[[要素の格上げ]]で呼び出されます。
他の[[コールバック]]とは違った処理となっています。
[136] [[モジュールスクリプトの実行]]は、[[モジュールスクリプトの作成]]の後、適当なタイミングで行われます。
* コールバックインターフェイスの処理の実行
@@ [6] [[コールバックインターフェイス]]
[112] [[演算]]:
[FIG(short list)[
- [[イベントリスナー]]
- [CODE(DOMi)@en[NodeFilter]]
]FIG]
* 約束コールバックの実行
[118] [[抽象操作]] [CODE[EnqueueJob]] の[[マイクロタスク]]は、
[VAR[ジョブ設定群]]、[VAR[現職設定群]]、
[VAR[job]] と [VAR[arguments]] について次のようにしなければ[MUST[なりません]] [SRC[>>276]]。
[FIG(steps)[
= [119] [VAR[ジョブ設定群]]に関して[[スクリプトを実行できるか検査]]した結果が「実行しない」なら、
== [120] ここで停止します。
= [121] [VAR[ジョブ設定群]]について[[スクリプト実行の準備]]をします。
= [122] [VAR[現職設定群]]について[[コールバック実行の準備]]をします。
= [123] [VAR[結果]]を、[VAR[job]] で指定された[[抽象操作]]を実行した結果に設定します。[VAR[arguments]] の各[[要素]]を[[引数]]とします。
= [124] [VAR[現職設定群]]に関して[[コールバックを走らせた後の片付け]]をします。
= [125] [VAR[ジョブ設定群]]に関して[[スクリプトを走らせた後の片付け]]をします。
= [126] [VAR[結果]]が [[abrupt completion]] なら、
== [127] [VAR[結果]]の[F(ss)[Value]]について[[例外を報告]]します。
]FIG]
;; [117] これは実際には[[約束]]ジョブ ([CODE[PromiseJobs]] [[ジョブキュー]]の[[ジョブ]])
でのみ使われます。[[約束]]ジョブの場合、 [VAR[job]] は [CODE(JS)@en[[[Promise]]]]
の[[解決]]や[[拒絶]]の[[コールバック]]の実行に当たります。
[133] 指定された[[抽象操作]]は、[[走っているスクリプトの実行中断]]で途中で中断される可能性もあります。
[HISTORY[
[128] [CODE[[DFN[NextJob]] [VAR[result]]]] は、次のようにしなければ[MUST[なりません]]
[SRC[>>276]]。
[FIG(steps)[
= [129] [VAR[result]] が [[abrupt completion]] なら、
== [130] [CODE[[VAR[result]].[F(ss)[value]]]] の[[例外を報告]]します。
]FIG]
;; [131] これは [[ECMAScript]] 仕様書と異なる [[HTML Standard]] 独自のアルゴリズムで、
[[意図的違反]]とされています。
;; [132] つまり [CODE(JS)@en[[[Promise]]]] の[[コールバック]]で発生した[[例外]]は、
[[例外の報告]]で処理されます。
]HISTORY]
* 準備と後片付け
[94] [[環境設定群オブジェクト]][VAR[設定群オブジェクト]]についての[DFN[[RUBYB[[[スクリプトを走らせる準備]]]@en[prepare to run script]]]]は、
次のようにします [SRC[>>22]]。
[FIG(steps)[
= [96] [VAR[設定群オブジェクト]]の[F[realm実行文脈]]の[F[入口計数器]]を [N[1]] [[インクリメント]]します。
= [97] [[JavaScript実行文脈スタック]]に、
[VAR[設定群オブジェクト]]の[F[[[realm実行文脈]]]]を[[積み]]ます。
(新たな[[走っているJavaScript実行文脈]]となります。)
]FIG]
[95] [[環境設定群オブジェクト]][VAR[設定群オブジェクト]]について[DFN[[RUBYB[[[スクリプトを走らせた後の片付け]]]@en[clean up after running a script]]]]は、
次のようにします [SRC[>>22]]。
[FIG(steps)[
= [30] [VAR[設定群オブジェクト]]の[F[[[realm実行文脈]]]]を[[JavaScript実行文脈スタック]]から削除します。
= [101] [VAR[設定群オブジェクト]]の[F[realm実行文脈]]の[F[入口計数器]]を [N[1]] [[デクリメント]]します。
= [31] [[JavaScript実行文脈スタック]]が空なら、
== [102] [[大域スクリプト片付けジョブを走らせます]]。
=- [33] ここでは[[スクリプト]]は走りません。
= [32] [[JavaScript実行文脈スタック]]が空なら、
== [103] [[マイクロタスクチェックポイント]]を行います。
=- [34] ここでは[[スクリプト]]が再帰的に走らせられることがあります。
]FIG]
;; [71] [[スクリプト実行の準備]]と[[スクリプトを走らせた後の片付け]]は、
[[コールバック関数の呼び出し]]や
[CODE[EnqueueJob]] による[[マイクロタスク]]でも呼び出されます。
[65] [DFN[[RUBYB[コールバックを走らせる準備]@en[prepare to run a callback]]]]は、
[[環境設定群オブジェクト]][VAR[設定群]]について、次のようにします [SRC[>>62]]。
[FIG(steps)[
= [66] [VAR[設定群]]を、[[イベントループ]]の[F[バックアップ現職設定群オブジェクトスタック]]に
[[push]] します。
= [67] [VAR[文脈]]を、[[最上スクリプト持ち実行文脈]]に設定します。
= [64] [VAR[文脈]]が [CODE[null]] 以外なら、
== [69] [VAR[文脈]]の[F[現職決定時に飛ばす計数器]]を[[インクリメント]]します。
]FIG]
[70] [DFN[[RUBYB[コールバックを走らせた後の片付け]@en[clean up after running a callback]]]]は、
[[環境設定群オブジェクト]][VAR[設定群]]について、次のようにします [SRC[>>62]]。
[FIG(steps)[
= [72] [VAR[文脈]]を、[[最上スクリプト持ち実行文脈]]に設定します。
= [73] [VAR[文脈]]が [CODE[null]] でなければ、
== [74] [VAR[文脈]]の[F[現職決定時に飛ばす計数器]]を[[デクリメント]]します。
= [75] [[イベントループ]]の[F[バックアップ現職設定群オブジェクトスタック]]から[VAR[設定群]]を削除します。
(スタックの最上にあるはずです。)
]FIG]
[100] これらの処理は、次の場面で呼び出されます。
[FIG(list)[
- [[利用者エージェント]]からの[[構造化クローン]]の前後 [SRC[>>99]]
- [[約束コールバックの実行]]
- [[古典スクリプトの実行]] ☆
- [[モジュールスクリプトの実行]] ☆
- [[利用者オブジェクトの操作の呼び出し]]
- [[利用者オブジェクトの属性値の取得]]
- [[利用者オブジェクトの属性値の設定]]
- [[コールバック関数の呼び出し]]
]FIG]
;; [105] ☆は、[[スクリプト]]の準備と片付けのみ行います。
それ以外は、[[スクリプト]]と[[コールバック]]の準備と片付けの両方を行います。
両方を行う場合であっても、使用する[VAR[設定群]]は異なることがあります。
[HISTORY[
[98] [[スクリプト]]や[[コールバック]]の実行に関する処理は幾度もの改訂を経ており、
処理内容も用語も大きく変化しています。
[154] かつては、後の[[スクリプトを走らせる準備]]と[[スクリプトを実行できるか検査]]とを合わせて[DFN[[RUBYB[[[コールバックを走らせる準備]]]@en[prepare to run a callback]]]]と呼んでいました。
[[スクリプトを走らせた後の片付け]]は、
[DFN[[RUBYB[[[コールバックを走らせた後の片付け]]]@en[clean up after running a callback]]]]と呼ばれていました。
(これらは現在のコールバックの準備と片付けとは別物でした。)
[104] [[JavaScript実行文脈スタック]]と[[スクリプト設定群オブジェクトのスタック]]が統合される前は、次のように規定されていました。
[35] [[JavaScript]] の [CODE(JS)[[[SourceElements]]]] が評価される時には、
それに対応する[[スクリプト]]の[[設定群オブジェクト]]を評価の直前に[[スクリプト設定群オブジェクトのスタック]]に
[[push]] し、直後に [[pop]] しなければ[['''なりません''']] [SRC[>>22]]。
[37] [[ES5]] では [CODE(JS)@en[[[SourceElements]]]] は[[プログラム]]の全体と、[[関数]]の中身で使われています。
[[ES6]] では [CODE(JS)@en[[[SourceElements]]]] がなくなってしまっています。 [TIME[2014-04-15T04:21:08.00Z]]
;; [36] [[コールバック関数の呼び出し]]と似ていますが、いくつか違いがあります。
[55] >>25 では[[実行時エラー]]が発生したり、[[例外]]が [[catch]] されなかったりすることがあります。
この場合の挙動は[[エラーの報告]]の項をご覧ください。
]HISTORY]
[165] [[JavaScriptエンジン]]の[DFN[[F[[RUBYB[[[走っているスクリプト]]]@en[running script]]]]]]は、
[F[走っているJavaScript実行文脈]]の [F[ScriptOrModule]] の
[F(ss)[HostDefined]] の値である[[スクリプト]]です [SRC[>>164]]。
[HISTORY[
[77] [[JavaScriptエンジン]]の[DFN[[F[[RUBYB[[[走っている実行文脈に対応するスクリプト]]]@en[script corresponding to the running execution context]]]]]]は、
[F[[[走っているJavaScript実行文脈]]]]の [F[[CODE[ScriptOrModule]]]]
の [CODE[[F(ss)[HostDefined]]]] の値である[[スクリプト]]です。 [SRC[>>76]]
]HISTORY]
* 実行制限と中断
[49] [[スクリプトの中断]]を参照。
* 歴史
[2] [[スクリプト]]、[[コールバック関数]]も参照。
[137] [CITE@en[Handle error cases during module script tree fetching/running better]]
([[domenic]]著, [TIME[2016-08-09 12:06:32 +09:00]])
<https://github.com/whatwg/html/commit/e1af86747f591e33fd0f3f21f301dc866868c9d4>
[93] [CITE@en[Make quality an explicit argument for canvas image conversion]]
([[domenic]]著, [TIME[2016-08-27 03:42:08 +09:00]])
<https://github.com/whatwg/html/commit/7d25c4c2452b705220417ffb951c9b89e04ba50b>
[110] [CITE@en[An exception is not always an object (e.g., throw 7)]]
([[annevk]]著, [TIME[2016-08-30 04:09:45 +09:00]])
<https://github.com/whatwg/html/commit/6f32dc2cdbde1991dfa8ba2bf79a2eebe18324cd>
[111] [CITE@en[Editorial: integrate more explicitly with IDL for callbacks]]
([[annevk]]著, [TIME[2016-08-26 18:42:24 +09:00]])
<https://github.com/whatwg/dom/commit/8906b74be70c008757a5ef4f58455908bfcab200>