* 仕様書

[REFS[
- [12] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-04 17:09:00 +09:00]] 版) <https://html.spec.whatwg.org/#the-location-interface>'''
- [11] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-11-04 19:30:07 +09:00]] 版) <https://html.spec.whatwg.org/#workerlocation>
]REFS]

* [CODE(DOMi)@en[Location]] オブジェクト

[23] [CODE(DOMi)@en[[[Location]]]] [[オブジェクト]]は、
[[閲覧文脈]]の[F[[[活性文書]]]]の[F[[[文書の番地]]]]を表します。
また、[[閲覧文脈]]の[F[[[セッション履歴]]]]を変更する [[API]]
を提供します。 [SRC[>>12]]

[FIG(list members)[
: [DFN[[F(ss)[DefaultProperties]]]] : 作成時点での自身の[[プロパティー]]のリストです [SRC[>>12]]。
: [F[文書]] :
当該[[オブジェクト]]が関連付けられた[[文書]]です。
: [DFN[[F[[RUBYB[[[関係する[CODE(DOMi)@en[Document]]]]][relevant [CODE(DOMi)@en[Document]]]]]]]] :
[F[文書]]の[F[閲覧文脈]]の[F[活性文書]]です [SRC[>>12]]。
: [DFN[[F[[RUBYB[URL][url]]]]]] :
[F[[[関係する[CODE(DOMi)@en[Document]]]]の[F[文書の番地]]です [SRC[>>12]]。
: [F[祖先起源群配列]] : [CODE(DOMa)@en[ancestorOrigins]] [[IDL属性]]の値です。
]FIG]

[7] [CODE(DOMi)@en[[[URLUtils]]]] としての動作は
[CODE(JS)@en[[[location.href]]]] を参照。

** メンバー

[1]
[FIG(list short)[
- [CODE(DOMa)@en[hash]]
- [CODE(DOMa)@en[host]]
- [CODE(DOMa)@en[hostname]]
- [CODE(DOMa)@en[href][location.href]]
- [CODE(DOMa)@en[pathname]]
- [CODE(DOMa)@en[port]]
- [CODE(DOMa)@en[protocol]]
- [CODE(DOMa)@en[search]]
- [CODE(DOMm)@en[reload]]
- [CODE(DOMm)@en[replace]]
- [CODE(DOMm)@en[assign]]
]FIG]

* [CODE(DOMi)@en[WorkerLocation]] インターフェイス (DOM)

[10] [CODE(DOMi)@en[[[WorkerLocation]]]] [[オブジェクト]]は、
[CODE(DOMi)@en[[[WorkerGlobalScope]]]] [[オブジェクト]]の[F[[[URL]]]]
を表します。

* [CODE(DOMa)@en[location]] IDL属性

[21] [DFN[[CODE(JS)@en[[[window.location]]]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[['''なりません''']] [SRC[>>12]]。
[FIG(steps)[
= [22] [[文脈オブジェクト]]の [F[[CODE(DOMi)@en[Location]]]]を返します。
]FIG]

[16] [DFN[[CODE(JS)@en[[[document.location]]]]]] [[IDL属性]]の[[取得器]]は、
次のようにしなければ[['''なりません''']] [SRC[>>12]]。
[FIG(steps)[
= [17] [[文脈オブジェクト]]が[F[完全に活性]]なら、
== [18] [[文脈オブジェクト]]の[F[関連大域オブジェクト]]の
[F[[CODE(DOMi)@en[Location]]]]を返します。
= [19] それ以外なら、
== [20] [CODE[null]] を返します。
]FIG]

[85] 
[CODE[window.location]] と [CODE[document.location]]
は
[CODE[[[PutForwards]]=[[href][location.href]]]]
です。
[SRC[>>12]]
つまり、
[CODE[[[window.location]] = [VAR[url]]]]
は
[CODE[[[window.location]].[[href][location.href]] = [VAR[url]]]]
と等価です。

[88] 
なお [CODE[location.href]] は
[CODE[stringifier]]
として定義されています。
従って [CODE[Location]] オブジェクトの
[CODE[toString]]
[[メソッド]]は
[CODE[location.href]]
の[[取得器]]と等価です。
つまり、
[CODE[window.location]]
を[[文字列]]連結すると
[CODE[location.href]]
とみなされます。


;;
[86] 
実際の
[[Webページ]]の
[[JavaScript]]
では
[CODE[window.location]]
やその省略形の
[CODE[location]]
を使う場合が多く、
[CODE[document.location]]
はあまり使われません。

;;
[87] 
[CODE[[[window.location]] = [VAR[url]]]]
や
[CODE[[[location]] = [VAR[url]]]]
はわかりにくいので、
[CODE[[[window.location]].[[href][location.href]] = [VAR[url]]]]
と書くことが多いです。

[HISTORY[

[89] 
先日 [[SNS]] で [CODE[window.location]] の [[setter]] は
[CITE[HTML Standard]]
に規定がないとか解説している人を見かけましたが、
誤りです。
初期の初期からしっかり[[規定]]されています。
そのように[[仕様書]]を引いてもっともらしいことを書いていても、
正確に読み込んでいるとは限らないので注意しましょう。
[TIME[2022-04-25T13:29:24.00Z]]

]HISTORY]


* 文脈

[13] [CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]は、
固有の [CODE(DOMi)@en[[[Location]]]] [[オブジェクト]]を持ちます。
[CODE(DOMi)@en[[[Window]]]] [[オブジェクト]]の作成時に
[CODE(DOMi)@en[[[Location]]]] [[オブジェクト]]が割り当てられます。 [SRC[>>12]]

[HISTORY[
[14] [CODE(JS)@en[[[document.open]]]] で [CODE(DOMi)@en[[[Location]]]]
[[オブジェクト]]は新しいものに差し替えられるとされていましたが、
その規定は削除されています。
]HISTORY]

* 作成

[24] [CODE(DOMi)@en[Location][Location (DOM)]] [[オブジェクト]]の作成は、次のようにします
[SRC[>>12]]。

[FIG(steps)[
= [25] [VAR[オブジェクト]]を、新しい [CODE(DOMi)@en[Location][Location (DOM)]]
[[プラットフォームオブジェクト]]に設定します。
[VAR[オブジェクト]]の [F(JS ss)@en[DefineOwnProperty]] を実行して次の通りメンバーを作成します。
[FIG(table)[
:name: 名前 (第1引数)
:Value: [F(ss)[Value]]
:Writable: [F(ss)[Writable]]
:Enumerable: [F(ss)[Enumerable]]
:Configurable: [F(ss)[Configurable]]

:name: [CODE[toString]]
:Value: [CODE[%ObjProto_toString%]]
:Writable: [CODE[false]]
:Enumerable: [CODE[false]]
:Configurable: [CODE[false]]

:name: [CODE[toJSON]]
:Value: [CODE[undefined]]
:Writable: [CODE[false]]
:Enumerable: [CODE[false]]
:Configurable: [CODE[false]]

:name: [CODE[valueOf]]
:Value: [CODE[%ObjProto_valueOf%]]
:Writable: [CODE[false]]
:Enumerable: [CODE[false]]
:Configurable: [CODE[false]]

:name: [CODE[@@toPrimitive]]
:Value: [CODE[undefined]]
:Writable: [CODE[false]]
:Enumerable: [CODE[false]]
:Configurable: [CODE[false]]

]FIG]
= [26] [VAR[オブジェクト]]の [F(ss)[DefaultProperties]] を、
[VAR[オブジェクト]]の [F(ss)[OwnPropertyKeys]] を実行した結果に設定します。
= [27] [VAR[オブジェクト]]を返します。
]FIG]

[31] 更に、 [F[祖先起源群配列]]を設定しなければ[MUST[なりません]]。

* 異なる起源からのアクセス

[42] [CODE(DOMi)@en[Location]] は、[[同じ起源]]でなくてもアクセスできる例外的な[[オブジェクト]]です。
(そのような性質を持つのは他に [CODE(DOMi)@en[WindowProxy]] だけです。)

[43] [[同じ起源]]からアクセスした時と、それ以外からアクセスした時とで、
動作がかなり変わります。

[44] [[JavaScript]] の[[内部メソッド]]は次のように動作しなければ[MUST[なりません]]
[SRC[>>12]]。

[FIG(table)[
:method: [[内部メソッド]]
:params: [[引数]]
:same: [CODE[[[IsPlatformObjectSameOrigin]]([[this]])]] が[[真]]
:cross: [CODE[[[IsPlatformObjectSameOrigin]]([[this]])]] が[[偽]]

:method: [60] [F(ss)[GetPrototypeOf]]
:same: [CODE[[[!][! (ECMAScript)]] [[OrdinaryGetPrototypeOf]]([[this]])]] を返します。
:cross: [[null]] を返します。

:method: [61] [F(ss)[SetPrototypeOf]]
:same: [[偽]]を返します。
:cross: [[偽]]を返します。

:method: [62] [F(ss)[IsExtensible]]
:same: [[真]]を返します。
:cross: [[真]]を返します。

:method: [63] [F(ss)[PreventExtensions]]
:same: [[偽]]を返します。
:cross: [[偽]]を返します。

:method: [64] [F(ss)[GetOwnProperty]]
:params: [VAR[P]]
:same:
[FIG(steps)[
= [32] [VAR[desc]] を、 [CODE[[[OrdinaryGetOwnProperty]]([[this]], [VAR[P]])]] に設定します。
= [33] [CODE[this]] の [F(ss)[DefaultProperties]] の値に [VAR[P]] が含まれるなら、
== [34] [VAR[desc]] の [F(ss)[Configurable]] を[[真]]に設定します。
= [35] [VAR[desc]] を返します。
]FIG]
:cross:
[FIG(steps)[
= [37] [VAR[特性]]を、 [CODE[[[!][! (ECMAScript)]] [[CrossOriginGetOwnPropertyHelper]]([[this]], [VAR[P]])]] に設定します。
= [38] [VAR[特性]]が[[未定義]]でなければ、
== [39] [VAR[特性]]を返します。
= [40] それ以外なら、
== [41] [CODE(DOMe)@en[SecurityError]] [[例外]]を[[投げ]]ます。
]FIG]

:method: [65] [F(ss)[DefineOwnProperty]]
:params: [VAR[P]], [VAR[Desc]]
:same:
[FIG(steps)[
= [46] [CODE[this]] の[F(ss)[DefaultProperties]]の値が [VAR[P]] を含むなら、
== [47] [[偽]]を返します。
= [48] それ以外なら、
== [49] [CODE[[[?][? (ECMAScript)]] [[OrdinaryDefineOwnProperty]]([[this]], [VAR[P]], [VAR[Desc]])]] を返します。
]FIG]
:cross: [[偽]]を返します。

:method: [66] [F(ss)[Get]]
:params: [VAR[P]], [VAR[Receiver]]
:same:
[CODE[[[?][? (ECMAScript)]] [[OrdinaryGet]]([[this]], [VAR[P]], [VAR[Receiver]])]]
を返します。
:cross:
[CODE[[[?][? (ECMAScript)]] [[CrossOriginGet]]([[this]], [VAR[P]], [VAR[Receiver]])]]
を返します。

:method: [67] [F(ss)[Set]]
:params: [VAR[P]], [VAR[V]], [VAR[Receiver]]
:same:
[CODE[[[?][? (ECMAScript)]] [[OrdinarySet]]([[this]], [VAR[P]], [VAR[V]], [VAR[Receiver]])]]
を返します。
:cross:
[CODE[[[?][? (ECMAScript)]] [[CrossOriginSet]]([[this]], [VAR[P]], [VAR[V]], [VAR[Receiver]])]]
を返します。

:method: [68] [F(ss)[Delete]]
:params: [VAR[P]]
:same:
[CODE[[[?][? (ECMAScript)]] [[OrdinaryDelete]]([[this]], [VAR[P]])]]
を返します。
:cross: [[偽]]を返します。

:method: [69] [F(ss)[OwnPropertyKeys]]
:same: [CODE[[[!][! (ECMAScript)]] [[OrdinaryOwnPropertyKeys]]([[this]])]]
を返します。
:cross:
[CODE[[[!][! (ECMAScript)]] [[CrossOriginOwnPropertyKeys]]([[this]])]]
を返します。
]FIG]

* 歴史

** JavaScript 1.0

[28] [[JavaScript 1.0]] で [CODE(DOMi)@en[Location][Location (DOM)]]
[[オブジェクト]]が導入され、[[URL分解属性]]が追加されました。

[FIG(list short)[
- [CODE(DOMa)@en[hash]]
- [CODE(DOMa)@en[host]]
- [CODE(DOMa)@en[hostname]]
- [CODE(DOMa)@en[href][location.href]]
- [CODE(DOMa)@en[pathname]]
- [CODE(DOMa)@en[port]]
- [CODE(DOMa)@en[protocol]]
- [CODE(DOMa)@en[search]]
]FIG]

** JavaScript 1.1

[29] [[JavaScript 1.1]] で [CODE(DOMm)@en[reload]] と
[CODE(DOMm)@en[replace]] が追加されました。

** 

@@

[30] [CODE(JS)@en[location.origin]] は10年代に追加されました。

* メモ

[2] [CITE@en[Re: WebIDL and prototype chains]]
([[Maciej Stachowiak]] 著, [TIME[2009-07-17 12:39:39 +09:00]] 版)
<http://lists.w3.org/Archives/Public/public-webapps/2009JulSep/0269.html>

[3] [CITE['''['''whatwg''']''' JS "redirects" and session history]]
([TIME[2010-07-28 08:22:37 +09:00]] 版)
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-July/027372.html>

[4] [CITE@en[Web Applications 1.0 r7512     Make sure <iframe name=location> doesn't override Document.location]]
( ([TIME[2012-11-20 03:47:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7511&to=7512>

[5] [CITE@en-US[Window Object 1.0]]
( ([TIME[2006-04-08 02:19:28 +09:00]] 版))
<http://www.w3.org/TR/Window/#window-location>

[6] [CITE[''''''[''''''whatwg'''''']'''''' Location object identity and navigation behavior]]
( ([TIME[2013-01-08 05:31:54 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-January/038527.html>


[319] [CITE[''''''[''''''whatwg'''''']'''''' Spec for location object needs to make some properties unforgeable; need supporting WebIDL changes]]
( ([TIME[2012-11-20 02:38:08 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-November/038015.html>

[320] [CITE[''''''[''''''whatwg'''''']'''''' Location object identity and navigation behavior]]
( ([TIME[2012-11-20 01:38:05 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-November/038014.html>

[321] [CITE[''''''[''''''whatwg'''''']'''''' Proposal: location.parentOrigin]]
( ([TIME[2012-11-20 06:25:14 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-November/038019.html>

[322] [CITE@en[Web Applications 1.0 r7513     Update Location's members to point to the right document.]]
( ([TIME[2012-11-20 09:15:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7512&to=7513>

[323] [CITE@en[Web Applications 1.0 r7514     Make Location be protected from cross-origin access like Window.]]
( ([TIME[2012-11-20 10:14:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7513&to=7514>

[324] [CITE@en[Web Applications 1.0 r7515     More security fixes: Location is now entirely Unforgeable, and wording for some other security paragraphs is now consistent.]]
( ([TIME[2012-11-20 10:42:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7514&to=7515>

[325] [CITE@en[Web Applications 1.0 r7516     Location's security model is actually different than Window's.]]
( ([TIME[2012-11-20 16:45:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7515&to=7516>

[326] [CITE@en-US[Window Object 1.0]]
( ([TIME[2006-04-08 02:19:28 +09:00]] 版))
<http://www.w3.org/TR/Window/#location>

[327] [CITE@en[Web Applications 1.0 r7758     Allow custom properties on Location objects to work for the Document whose Location object it originally was.]]
( ([TIME[2013-03-16 08:00:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7757&to=7758>

[328] [CITE@en[Web Applications 1.0 r7846     Try to match reality better for dynamic location.hash navigation.]]
( ([TIME[2013-04-23 03:01:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7845&to=7846>

[405] [CITE[IRC logs: freenode / #whatwg / 20131010]]
( ([TIME[2013-10-14 00:14:43 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20131010>

[407] [CITE[IRC logs: freenode / #whatwg / 20131213]]
( ([TIME[2013-12-15 23:01:08 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20131213>

[408] [CITE[IRC logs: freenode / #whatwg / 20140205]]
( ([TIME[2014-02-08 12:44:05 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140205#l-961>

[409] [CITE@en[Cross-origin windows and how to explain them in ECMAScript semantics]]
( ([[David Bruant]] 著, [TIME[2014-02-08 21:16:11 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-script-coord/2014JanMar/0140.html>


[8] [CITE@en[Inline URLUtilsReadOnly · whatwg/html@32a7a20]]
([TIME[2015-09-26 11:27:43 +09:00]] 版)
<https://github.com/whatwg/html/commit/32a7a2092eeff52aca78a0224816a9b327893cc6>

[9] [CITE@en[Give workers a base URL and clean up shared workers · whatwg/html@b620471]] ([TIME[2015-11-06 22:23:05 +09:00]] 版) <https://github.com/whatwg/html/commit/b620471ff823e8e6507b077cf0785a530762f5e3>

[15] [CITE@en[Tie Location to the Window object · whatwg/html@fdd8216]]
([TIME[2016-02-04 21:08:58 +09:00]] 版)
<https://github.com/whatwg/html/commit/fdd8216a902a065dd3e205cbbc1b5a6b527970a2>

[36] [CITE@en[Cross-origin objects: do not wrap JavaScript functions]]
( ([[annevk]]著, [TIME[2016-06-22 00:21:17 +09:00]]))
<https://github.com/whatwg/html/commit/db361b608157b5cf9fd0d491d7dc76cdce80380b>

[45] [CITE@en[Explain why cross-origin properties are configurable]]
([[domenic]]著, [TIME[2016-09-09 05:18:17 +09:00]])
<https://github.com/whatwg/html/commit/7891ea33f643f2b6af18dacc532378671c922b76>

[50] [CITE@en[document.location requires document to be fully active]]
([[annevk]]著, [TIME[2016-09-09 05:23:02 +09:00]])
<https://github.com/whatwg/html/commit/126ec9eadb149285c8f41a40929ff53ca8112826>

[51] [CITE@en[Throw for cross-origin '''[''''''['''Delete''']'''''']''' and use "SecurityError" as needed]]
([[annevk]]著, [TIME[2016-09-15 01:50:33 +09:00]])
<https://github.com/whatwg/html/commit/9b22d034cd5a89cac9e54174d009ef8a256bcf13>

[52] [CITE@en[Make Location's toString() work and drop its toJSON()]]
([[annevk]]著, [TIME[2017-02-14 18:10:27 +09:00]])
<https://github.com/whatwg/html/commit/74a78cb74c07b81bc195bdf50d90811f8f5ee5aa>

[53] [CITE@en[Remove javascript URL case from <a>/<area>/Location hash setter]]
([[annevk]]著, [TIME[2017-02-22 15:19:37 +09:00]])
<https://github.com/whatwg/html/commit/deea9fba916cb6e66c7dcfc57442cf25ac0441a1>

[54] [CITE@en[Tweak the exposure of cross-origin properties]]
([[domenic]]著, [TIME[2017-07-17 17:14:13 +09:00]])
<https://github.com/whatwg/html/commit/79b4fbc6cfa2123620fa05c27579f4ec1e7d9c5d>

[55] [CITE@en[Why are indexed properties on WindowProxy not enumerable in the spec? · Issue #2753 · whatwg/html]]
([TIME[2017-07-18 20:57:12 +09:00]])
<https://github.com/whatwg/html/issues/2753>

[56] [CITE@en[Why are indexed properties on WindowProxy not enumerable in the spec? · Issue #2753 · whatwg/html]]
([TIME[2017-07-18 21:08:07 +09:00]])
<https://github.com/whatwg/html/issues/2753>

[57] [CITE@en[Tweak the exposure of cross-origin properties by domenic · Pull Request #2777 · whatwg/html]]
([TIME[2017-07-18 21:08:59 +09:00]])
<https://github.com/whatwg/html/pull/2777>

[58] [CITE@en[Enumerate fewer cross-origin properties]]
([[annevk]]著, [TIME[2017-11-07 01:09:46 +09:00]])
<https://github.com/whatwg/html/commit/ad8823782e7f6b7d60f8e216901bb76d1a53dd6d>

[59] [CITE@en[Enumerable cross-origin properties don't seem to be web-compatible · Issue #3183 · whatwg/html]]
([TIME[2017-11-07 17:01:47 +09:00]])
<https://github.com/whatwg/html/issues/3183>

[70] [CITE@en[Enumerate less cross-origin properties by annevk · Pull Request #3186 · whatwg/html]]
([TIME[2017-11-07 17:02:22 +09:00]])
<https://github.com/whatwg/html/pull/3186>

[71] [CITE@en[Make crossOriginObject.then undefined for promises]]
([[annevk]]著, [TIME[2018-02-08 04:39:51 +09:00]])
<https://github.com/whatwg/html/commit/6031e3a2d66ee2ff11d09abd18e6a25a3c78c5ba>

[72] [CITE@en[No way to resolve a Promise with a cross domain WindowProxy · Issue #536 · whatwg/dom]]
([TIME[2018-02-08 16:52:36 +09:00]])
<https://github.com/whatwg/dom/issues/536>

[73] [CITE@en[Make crossOriginObject.then undefined for promises by annevk · Pull Request #3242 · whatwg/html]]
([TIME[2018-02-08 16:53:51 +09:00]])
<https://github.com/whatwg/html/pull/3242>

[74] [CITE@en[WindowProxy and Location use ordinary internal methods by default]]
([[annevk]]著, [TIME[2018-11-27 23:13:42 +09:00]])
<https://github.com/whatwg/html/commit/44da6795888d90cc7d4181a57e5b7aeafe461fb5>

[75] [CITE@en[Correct branching logic in choosing a browsing context by annevk · Pull Request #4197 · whatwg/html]]
([TIME[2019-05-18 14:43:14 +09:00]])
<https://github.com/whatwg/html/pull/4197>

[76] [CITE@en[Handle cross-origin "then" and friends at a later point]]
([[annevk]]著, [TIME[2019-01-07 22:00:24 +09:00]])
<https://github.com/whatwg/html/commit/5e370be9b9d48fe5106472db0ea65e01c64387bc>

[77] [CITE@en[Handling of "then" on cross-origin windows doesn't match what we agreed to do or browsers · Issue #4251 · whatwg/html]]
([TIME[2019-06-01 11:45:09 +09:00]])
<https://github.com/whatwg/html/issues/4251>

[78] [CITE@en[Handle cross-origin "then" and friends at a later point by annevk · Pull Request #4269 · whatwg/html]]
([TIME[2019-06-01 11:45:35 +09:00]])
<https://github.com/whatwg/html/pull/4269>

[79] [CITE@en[WindowProxy and Location use ordinary internal methods by default]]
([[annevk]]著, [TIME[2018-11-27 23:13:42 +09:00]])
<https://github.com/whatwg/html/commit/44da6795888d90cc7d4181a57e5b7aeafe461fb5>

[80] [CITE@en[Should clearly define that the ordinary object internal methods are used when not stated otherwise for WindowProxy and Location · Issue #4189 · whatwg/html]]
([TIME[2019-06-20 09:57:47 +09:00]])
<https://github.com/whatwg/html/issues/4189>

[81] [CITE@en[Clarify that WindowProxy and Location use ordinary internal methods by default by annevk · Pull Request #4191 · whatwg/html]]
([TIME[2019-06-20 09:58:06 +09:00]])
<https://github.com/whatwg/html/pull/4191>

[82] [CITE@en[Only run "perform a security check" for Window and Location objects]]
([[annevk]], [TIME[2019-12-11 19:48:19 +09:00]], [TIME[2021-03-17T11:12:32.000Z]])
<https://github.com/whatwg/html/commit/e46fc2f59a064ab4e45b9f3e6fa9322ad591ef0f>

[83] [CITE@en[Only run "perform a security check" for Window and Location objects by annevk · Pull Request #5141 · whatwg/html]]
([TIME[2021-03-17T11:13:04.000Z]])
<https://github.com/whatwg/html/pull/5141>

[84] [CITE@en[Consolidate performing a security check in the spec with implementations · Issue #2360 · whatwg/html]]
([TIME[2021-03-17T11:14:00.000Z]])
<https://github.com/whatwg/html/issues/2360>