/
661.txt
128 lines (108 loc) · 7.13 KB
/
661.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
[8] [[閲覧文脈の作成]]は、[[窓]]を開くなどの[[利用者]]の操作により、
あるいは [CODE(HTMLe)@en[[[iframe]]]] [[要素]]の挿入などの[[スクリプト]]の操作により、
行われます。
* 仕様書
[REFS[
- [1] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#creating-a-new-browsing-context>'''
- [19] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#attr-iframe-sandbox>
]REFS]
* 文脈
[9] 次の場面で[[閲覧文脈の作成]]が呼び出されます。
[FIG(list)[
- [[フレーム]]の[[文書への挿入]] [SRC[[[HTML Standard]]]]
- [[the rules for choosing a browsing context given a browsing context name]]
で新たに[[閲覧文脈]]を開く場合 [SRC[[[HTML Standard]]]]
- [CODE(DOMm)@en[[[showModalDialog]]]] [SRC[[[HTML Standard]]]]
- [CODE(HTMLe)@en[[[object]]]] [[要素]]で[[閲覧文脈]]を使う場合
- [CODE(HTMLe)@en[[[embed]]]] [[要素]]で[[閲覧文脈]]を使う場合
- 新しい[[窓]]や[[タブ]]を開いた場合
]FIG]
* 処理
[2] [DFN[[RUBYB[新しい閲覧文脈の作成]@en[create a new browsing context]]]] [SRC[>>1]] は、
次のようにしなければ[['''なりません''']]。
[FIG(steps)[
= [15] [DFN[[RUBYB[初期「[CODE(URI)@en[about:blank]]」[[文書]]]@en[initial "[CODE(URI)@en[about:blank]]" document]]]]を作成します [SRC[>>1]]。
[FIG(list members)[
[FIGCAPTION[
[[文書]]
]FIGCAPTION]
:[[文書の番地]]:[CODE(URI)@en[[[about:blank]]]]
:[[HTML文書]]:[[真]]
:[[文字符号化]]:[[UTF-8]]
:[[ready for post-load tasks]]:[[真]]
:[[completely loaded]]:[[真]]
:[[作成子[CODE(DOMi)@en[Document]]]]:[[作成子閲覧文脈]] (あれば) の[[活性文書]]
:[[文書のreferrer]]:[[作成子[CODE(DOMi)@en[Document]]]] (あれば) の[[文書の番地]]
:[[文書の起源]]:[[作成子[CODE(DOMi)@en[Document]]]]があれば、その[[文書の起源]]の[[別名]]。
なければ[[大域的に固有な識別子]]。
:[[実効スクリプト起源]]:[[作成子[CODE(DOMi)@en[Document]]]]があれば、その[[実効スクリプト起源]]の[[別名]]。
なければ[[文書の起源]]の[[別名]]。
:[[子供節点]]:[CODE(HTMLe)@en[[[html]]]] [[要素]]。その[[子供]]は
[CODE(HTMLe)@en[[[head]]]] [[要素]]と [CODE(HTMLe)@en[[[body]]]] [[要素]]
(いずれも[[空]])。
]FIG]
= [16] 新しい [CODE(DOMi)@en[[[Window]]]] を作成し、新しく作成した[[文書]]と関連付けます [SRC[>>1]]。
= [17] [[閲覧文脈]]を作成します。
[FIG(list members)[
[FIGCAPTION[
[[閲覧文脈]]
]FIGCAPTION]
:入れ子か最上位か:呼び出し元の指定によります。
:[[auxiliary browsing context]] か:呼び出し元の指定によります。
:[[セッション履歴]]:
[FIG(list members)[
[FIGCAPTION[
[[セッション履歴エントリー]]
]FIGCAPTION]
:[[文書]]:新しく作成した[[文書]] [SRC[>>1]]
:[[作成子閲覧文脈]]:指定された[[閲覧文脈]] (あれば) [SRC[>>1]]
]FIG]
:[[[CODE(HTMLe)@en[iframe]] sandboxing flag set]]:
[CODE(HTMLa)@en[[[sandbox]]]] [[属性]]と [CODE(HTMLa)@en[[[allowfullscreen]]]]
[[属性]]を [[parse the sandboxing directive]]
して得た [[sandboxing flag set]] ([CODE(HTMLe)@en[[[iframe]]]] [[入れ子閲覧文脈]]の場合)
[SRC[>>19]]。
]FIG]
= [18] 新しく作成した[[文書]]について [[implement the sandboxing]] を実行します [SRC[>>1]]。
]FIG]
;; [3] [[文書のreferrer]] と [[CSP]] などの [CODE[[[referrer]]]] の指定との関係は不明瞭です。
;; [20] 作成後、 (本作成手順の呼び出し元で) [[閲覧文脈名]]が設定されることになります。
[10] [CODE(DOMi)@en[[[Window]]]] は[[大域オブジェクト]]ですから、
付随して[[環境設定群オブジェクト]]、 [[JavaScript]] 実行環境、
[[Web IDL]] [[インターフェイスオブジェクト]]なども作られます。
この [CODE(DOMi)@en[[[Window]]]] は、 [[navigate]] により次の[[文書]]に再利用されることがあります。
;; [[文書オブジェクトの初期化]]参照。
[11] 本項の初期化手順の後に、[[閲覧文脈]]が使われる各文脈に依存した次の処理が
(必要なら) 行われます。
[12] [[Webブラウザー]]で新たな[[タブ]]を開いたことによる[[閲覧文脈]]の作成の場合には、
<about:newtab> などの [[Webブラウザー]]依存の初期ページや、
[[利用者]]の設定した[[ホームページ]]へと[[置換有効]]で [[navigate]] されます。
[13] 外部アプリケーションから [[Webブラウザー]]に [[URL]]
を指定して起動 (あるいは[[プロセス間通信]]により [[URL]] を開くことを指示)
した場合には、その [[URL]] へと[[置換有効]]で [[navigate]] されます。
[14] [[お気に入り]]や閲覧[[履歴]]などの [[Webブラウザー]]依存の[[利用者インターフェイス]]を通して
[[URL]] を指定して新しい[[閲覧履歴]]が開かれた場合には、
その [[URL]] へと[[置換有効]]で [[navigate]] されます。
* 最初の [CODE(JS)@en[about:blank]] 文書
[4] [[閲覧文脈の作成]]時に作成される[[文書]]は、仕様書中では
「[[閲覧文脈]]作成時に追加された [CODE(URI)@en[[[about:blank]]]] [[文書]]」、
「初期『[CODE(URI)@en[about:blank]]』文書」などと呼ばれます。
[21] [[閲覧文脈]]作成時に[[セッション履歴]]に追加された
[CODE(URI)@en[[[about:blank]]]] [[文書]]は、次の場面で特別に扱われます。
[FIG(short list)[
- [[文書オブジェクトの初期化]]
- [CODE(JS)@en[[[location.assign]]]]
- [CODE(JS)@en[[[document.open]]]]
- [CODE(JS)@en[[[window.open]]]]
- [[フレーム]]
]FIG]
[5] 初期文書かどうかは、[[置換有効]]で [[navigate]] するかどうかの判断に使われます。
つまり初期文書は当該[[閲覧文脈]]で [[navigate]] が最初に発生した時に[[セッション履歴]]から削除されることになります。
[6] この判断は初期文書かどうか否かで行うので、[[スクリプト]]により内容を操作しているか否かは影響しません。 (ただし [CODE(JS)@en[[[document.open]]]] や
[CODE(DOMm)@en[[[pushState]]]] で[[セッション履歴エントリー]]が新たに追加されていれば、
初期文書が唯一の[[セッション履歴エントリー]]であるとの条件を満たさなくなります。)
[7] [CODE(DOMm)@en[[[replaceState]]]] や [CODE(JS)@en[[[document.open]]]]
で[[セッション履歴エントリー]]が置換された場合で [[URL]]
が [CODE(URI)@en[[[about:blank]]]] でなくなった場合、
あるいは [CODE(URI)@en[[[about:blank]]]] のままで[[セッション履歴エントリー]]が置き換わった場合にどう影響するのかは明確ではありません。
[[初期「[CODE(URI)@en[about:blank]]」文書]]であるかどうかの判断が[[文書]]に於けるものか[[セッション履歴エントリー]]に於けるものかで変わってきます。