-
Notifications
You must be signed in to change notification settings - Fork 4
/
598.txt
159 lines (123 loc) · 8.18 KB
/
598.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
[36] [DFN[[CODE(JS)@en[[[window.opener]]]]]] は、[CODE(JS)@en[[[window.open]]]]
で開いた[[閲覧文脈]]内の[[スクリプト]]から、元の[[閲覧文脈]]へとアクセスするための[[特性]]です。
* 仕様書
[REFS[
- [13] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-11-12 17:26:47 +09:00]] 版) <https://html.spec.whatwg.org/#opener-browsing-context>
- [16] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-11-12 17:26:47 +09:00]] 版) <https://html.spec.whatwg.org/#dom-opener>'''
- [8] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-11-12 17:26:47 +09:00]] 版) <https://html.spec.whatwg.org/#link-type-noopener>
- [37] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-11-12 17:26:47 +09:00]] 版) <https://html.spec.whatwg.org/#dom-open>
]REFS]
* [CODE(JS)@en[window.opener]] (DOM)
[17] [CODE(DOMi)@en[[[Window]]]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[[[opener]]]]]] [[IDL属性]]は、
[[取得時]]、次のようにしなければ[['''なりません''']] [SRC[>>16]]。
[FIG(steps)[
= [18]
[FIG(list)[
- [20] [[文脈オブジェクト]]の[F[[[閲覧文脈]]]]が[[補助閲覧文脈]]で、
- [21] その[F[[[opener閲覧文脈]]]]がまだ利用可能で、
- [22] [[文脈オブジェクト]]の[F[[[閲覧文脈]]]]がこれを disown していない場合、
]FIG]
には、
== [23] [[文脈オブジェクト]]の[F[[[閲覧文脈]]]]の[F[[[opener閲覧文脈]]]]の
[F[[CODE(DOMi)@en[[[WindowProxy]]]]]] を返します。
= [24] それ以外なら、
== [25] [[null]] を返します。
]FIG]
;; [19] 「まだ利用可能」というのがどういうことか明確ではありませんが、
元の[[窓]]を[[利用者]]が閉じるなどしたら、 [CODE[[[opener]]]]
にアクセスできなくなっても良いということでしょうか。
[26] [[設定時]]は、次のようにしなければ[['''なりません''']] [SRC[>>16]]。
[FIG(steps)[
= [27] 新しい値が [[null]] なら、
== [28] [[文脈オブジェクト]]の[F[[[閲覧文脈]]]]が、 opener を disown します。
= [29] それ以外なら、
== [30] [[文脈オブジェクト]]の [CODE[[[DefineOwnProperty]]]] [[内部メソッド]]を実行します。
[FIG(list members)[
:[[property key]]: [CODE[[[opener]]]]
:[[Property Descriptor]]:
[FIG(list members)[
:[F[[[Value]]]]: 新しい値
:[F[[[Writable]]]]: [[真]]
:[F[[[Enumerable]]]]: [[真]]
:[F[[[Configurable]]]]: [[真]]
]FIG]
]FIG]
]FIG]
;; [35] [CODE[[[opener]]]] という名前の通常の [[JavaScript]]
の[[変数]]が使われることがあるため、値を一度設定したら [[IDL属性]]ではなくなる、
というかなり特殊な[[設定器]]となっています。
[14] [DFN[[RUBYB[opener閲覧文脈]@en[opener browsing context]]]]は、
[[補助閲覧文脈]]が作成された元の[[閲覧文脈]]です [SRC[>>13]]。
[15] [[補助閲覧文脈]]は、[F[[[opener閲覧文脈]]]]を持ちます [SRC[>>13]]。
[31] [[opener閲覧文脈]]は、[[直接到達可能閲覧文脈]]かどうかや
[[familiar with]] かどうかの決定に影響します。
[32] [F[[[opener閲覧文脈]]]]は、[F[[[作成子閲覧文脈]]]]ともなることがあります。
[33] ある[[閲覧文脈]]の[F[[[opener閲覧文脈]]]]という関係は、
[DFN[[[disown its opener]]]] [SRC[>>16]] されることがあります。
これは、[[スクリプト]]から [CODE(JS)@en[[[window.opener]]]]
を通して [[opener閲覧文脈]]へのアクセスをできなくする(なる)ことをいいます。
;; 他の[[変数]]等で依然としてアクセス可能な場合もありますが、
[[opener閲覧文脈]]ではなくなります。
[34] disown されるのは、次の場合です。
[FIG(list)[
- [CODE(JS)@en[[[window.opener]]]] に値を設定した場合 ([CODE(JS)@en[[[window.opener]] = [[window.opener]]]] も含みます)。
- [CODE(HTML)@en[[[rel=noreferrer]]]] が適用される場合 ([[ハイパーリンクをたどる]]処理)。
- [CODE(HTML)@en[[[rel=noopener]]]] が適用される場合 ([[ハイパーリンクをたどる]]処理)。
- [CODE(JS)@en[[[window.open]]]] の機能 [CODE(HTML)@en[[[noopener]]]] が指定された場合。
- [[サービスワーカー]]下の[[非保安文脈]]から[[保安文脈]]への [[navigate]]
]FIG]
* リンク型 [CODE(HTML)@en[noopener]]
[9] [[リンク型]] [DFN[[CODE(HTML)@en[[[noopener]]]]]] は、
新しい[[閲覧文脈]]を開いた時に [CODE(JS)@en[[[window.opener]]]]
を [[null]] とするべきことを示します。
[10] [CODE(HTML)@en[[[noopener]]]] は、 [CODE(HTMLe)@en[[[a]]]] [[要素]]や
[CODE(HTMLe)@en[[[area]]]] [[要素]]の [CODE(HTMLa)@en[[[rel]]]]
[[属性]]で使うことができます [SRC[>>8]]。
[11] 本[[リンク型]]は[[ハイパーリンク]]を作成するものではなく、注釈となるもの
([[hypertext annotation]]) です。 (他に[[リンク型]]を作成する[[ハイパーリンク]]が無い時は、
暗示的に作成される[[ハイパーリンク]]を注釈付けするものです。) [SRC[>>8]]
;; [12] この性質は [CODE(HTML)@en[[[noreferrer]]]] と似ています。
* [CODE(JS)@en[window.open]] の機能 [CODE[noopener]]
[38] [CODE(JS)@en[[[window.opener]]]] の第3引数 [VAR[[[features]]]]
の字句 [DFN[[CODE[[[noopener]]]]]] [SRC[>>37]] は、新しい[[閲覧文脈]]を開いた時、
その関係を切ることを求めるものです。
[39] これが指定された場合、新しい[[閲覧文脈]]側の [CODE(JS)@en[[[window.opener]]]]
は [[null]] となります。 [CODE(JS)@en[[[window.open]]]] は [[null]]
を返し、新しい[[閲覧文脈]]を返しません。
* 歴史
[1] [CITE@en[Web Applications 1.0 r7941 Example window.opener cross-origin.]]
( ([TIME[2013-06-08 07:55:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7940&to=7941>
[2] [CITE@en[Bug 21946 – Ignoring non-null values of opener does not seem to be web-compatible]]
( ([TIME[2013-06-09 22:22:16 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=21946>
[3] [CITE@en[Web Applications 1.0 r8235 Try to make window.opener more compatible]]
( ([TIME[2013-10-23 03:15:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8234&to=8235>
[4] [CITE[''''''[''''''whatwg'''''']'''''' Effect on window.opener when navigating an existing window using window.open]]
( ([TIME[2014-04-02 20:17:18 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2014-April/126955.html>
[5] [CITE@en[Web Applications 1.0 r8652 Turns out window.opener is set to all kinds of crazy things and we shouldn't fire TypeError for them]]
( ([TIME[2014-05-31 03:34:00 +09:00]] 版))
<http://html5.org/r/8652>
[6] [CITE[IRC logs: freenode / #whatwg / 20151105]]
([TIME[2015-11-06 17:57:39 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20151105#l-441>
[7] [CITE@en[Add a 'noopener' <link rel> keyword and window feature · whatwg/html@2992ea9]] ([TIME[2015-11-12 21:22:48 +09:00]] 版) <https://github.com/whatwg/html/commit/2992ea921bc75e44157451a37a807a8ce0b9a884>
[211] [CITE@en[Add a 'noopener' link attribute by mikewest · Pull Request #290 · whatwg/html]] ([TIME[2015-11-12 22:14:09 +09:00]] 版) <https://github.com/whatwg/html/pull/290>
[40] [CITE@en[Popups from non-secure contexts now require `noopener` to be consider… · w3c/webappsec-secure-contexts@b062415]]
([TIME[2015-11-13 11:56:10 +09:00]] 版)
<https://github.com/w3c/webappsec-secure-contexts/commit/b062415fb3b1213b37ecce5c63e70f48888c6f8d>
[41] [CITE@en[28821 – add rel=newcontext]]
([TIME[2016-03-09 15:23:18 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28821>
[42] [CITE[About rel=noopener]]
([TIME[2016-03-16 19:28:03 +09:00]] 版)
<https://mathiasbynens.github.io/rel-noopener/>
[43] [CITE@en[Fixing some links and cleaning up lists.]]
([[mikewest]]著, [TIME[2016-07-15 22:00:54 +09:00]])
<https://github.com/w3c/webappsec-secure-contexts/commit/5f36532e8909c8bf72daa431724b6372bc5366ab>
[44] [CITE@en[Improve navigate for service worker hooks]]
([[jungkees]]著, [TIME[2016-10-24 20:32:35 +09:00]])
<https://github.com/whatwg/html/commit/2b93f9ec35b152e58d3e181bea8c45d789bac949>