/
307.txt
56 lines (49 loc) · 3.37 KB
/
307.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
* 仕様書
[REFS[
- [2] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-workerglobalscope-importscripts>
]REFS]
* 処理
[3] [CODE(DOMi)@en[[[WorkerGlobalScope]]]] [[インターフェイス]]の
[DFN[[CODE(DOMm)@en[[[importScripts]]]]]] [[メソッド]]は、
次のようにしなければ[['''なりません''']] [SRC[>>2]]。
[FIG(steps)[
= [4] 任意の個数の [CODE(DOMi)@en[[[DOMString]]]] が[[引数]]として指定されたと解釈します。
= [5] [[引数]]がなければ、ここで停止します。
= [6] 各[[引数]]の[[URLの解決]]を行います [SRC[>>2]]。
[[現職設定群オブジェクト]]の[[API基底URL]]を使うと思われますが、明記されていません。
= [7] 失敗があれば、 [CODE(DOMe)@en[[[SyntaxError]]]] [[例外]]を[[投げ]]て停止します。
= [8] 各[[解決]]結果の [[URL]] について [[fetch]] します。
[[起源]]と [[referrer origin]] は[[現職設定群オブジェクト]]によります。
[[blocking flag]] も設定します。
= [9] 各[[引数]]について順番に、
== [10] [[fetch]] の完了を待ちます。
== [11] [[ネットワークエラー]]や [CODE(HTTP)[[[4xx]]]] や [CODE(HTTP)[[[5xx]]]]
なら、
=== [12] [CODE(DOMe)@en[[[NetworkError]]]] [[例外]]を[[投げ]]、ここで停止します。
== [15] [[応答]]の[[本体]]を [[UTF-8復号]]します。
== [16] その結果を、
指定された[[環境設定群オブジェクト]]の [[JavaScript]] [[スクリプト実行環境]]により、
[[構文解析]]、[[コンパイル]]、[[初期化]]します。
== [13] 失敗なら、 [[JavaScript]] [CODE(JS)@en[[[SyntaxError]]]]
を[[例外]]として[[投げ]]、ここで停止します。
== [17] [[スクリプト]]を作成します。
[FIG(list members)[
[FIGCAPTION[
[[スクリプト]]
]FIGCAPTION]
:[[コード入口点]]: [[コンパイル]]で得られた値とします。
:[[設定群オブジェクト]]:[[現職設定群オブジェクト]]
:[[muted errors]]:[[応答]]の[[URLの起源]]が[[現職設定群オブジェクト]]の[[起源]]と[[同じ起源]]でないなら、[[真]]
]FIG]
== [14] 作成した[[スクリプト]]の[[コード入口点に飛ぶ]]こととします。
[[返る]]か、[[捕獲]]されない[[例外]]が投げられるか、
[[kill a worker]]/[[terminate a worker]] により中断されるまで実行します。
== [18] [[例外]]や中断は、[[メソッド]]の呼び出し元へと[[伝播]]させ、ここで停止します。
]FIG]
;; [19] 本[[メソッド]]は [[fetch]] の結果を[[同期的]]に待っています。ただし
[[fetch]] の開始は同時なので、[[スクリプト]]実行中に[[ネットワーク]]から取得されることを期待できます。
;; [20] [[HTML Standard]] 仕様上は[[スクリプトの作成]]を使って規定されていますが、
[[スクリプトの作成]]と本[[メソッド]]のエラー処理の規定が矛盾しており、
[[スクリプトの作成]]を使わないで[[スクリプト]]を作って実行するのが想定された動きと思われます。
* 歴史
[1] [CITE[importScripts() no longer checking for cross-origin loads]] ([[Ian Hickson <ian@...>]] 著, [TIME[2008-11-26 23:40:05 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/16885>