location.replace

Location インターフェイス assign メソッド、replace メソッド (DOM)

[23] Location インターフェイスの replace メソッドは、置換有効で navigate することを指示するものです。 同じく assign メソッドは、原則として置換有効とせずに navigate することを指示するものです。

仕様書

性質

[28] assign メソッドも replace メソッドも、 Unforgeable です >>1, >>7。

メソッドの処理

[24] assign メソッドは、次のようにしなければなりません >>1。

  1. [29] URL を、第1引数を USVString として解釈した結果に設定します。
  2. [25] 文脈オブジェクトの関係するDocumentの起源と入口設定群オブジェクトの起源が同じ起源ドメインでなければ、
    1. [26] SecurityError 例外を投げ、ここで停止します。
  3. [27] 結果を、入口設定群オブジェクトに対して URL をURLの構文解析した結果に設定します。
  4. [31] 結果が失敗なら、
    1. [32] SyntaxError 例外を投げてここで停止します。
  5. [30] 文脈オブジェクトと 結果のURL記録について Location-object navigate を実行します。

[9] replace メソッドは、次のようにしなければなりません >>7。

  1. [2] URL を、第1引数を USVString として解釈した結果に設定します。
  2. [3] 結果を、入口設定群オブジェクトに対して URL をURLの構文解析した結果に設定します。
  3. [4] 結果が失敗なら、
    1. [5] SyntaxError 例外を投げてここで停止します。
  4. [6] 文脈オブジェクトと 結果のURL記録について Location-object navigate を実行します。 置換有効フラグを設定します。

[8] location.assign とは違って location.replace では起源の検査は行われません。つまり他の任意のフレームから呼び出すことができます。

navigate 処理

[10] Location オブジェクトのメソッド replace, assign を実行したり、 各URL分解属性の設定器に値を設定したりすると、 navigate が発生します。これらは、 URL を組み立てた後、本項のような処理を実行します。

[11] location.reload も navigate を発生させますが、 処理は少し違っています。

[12] 仕様書上の手順である Location-object navigate と Location-object-setter navigate は、 Location オブジェクト オブジェクトと URL記録 URL について、 次のように navigate することをいいます >>19。

navigate する閲覧文脈
閲覧文脈。
新しい資源
URL。
原始閲覧文脈
現職設定群オブジェクトの有責閲覧文脈。
置換有効
>>13

[38] ただし例外が投げられたら、再度投げます >>19。

[22] ここでいう閲覧文脈は、オブジェクトの文書の閲覧文脈と思われますが、 明記されていません。

[13] ここで、置換有効は、次のように決定します >>19。

[15] location.replace
真
[34] location.assign
  1. [33] 閲覧文脈のセッション履歴が初期about:blank文書のみなら、 真。
  2. [14] それ以外なら、偽。
[35] その他
  1. [21] 閲覧文脈のセッション履歴が初期about:blank文書のみなら、 真。
  2. [20] それ以外で、オブジェクトの関係するDocument がcompletely loaded なら、偽。
  3. [36] それ以外で、現在走っているタスクが信用済みクリックなら、偽。
  4. [37] それ以外なら、真。

歴史

[16] Clarify the error handling for Location#{assign,replace} · whatwg/html@9cbe9b3 ( 版) <https://github.com/whatwg/html/commit/9cbe9b33bd969ad0590370ad97a3e282226dfd9c>

[17] Define security around Window, WindowProxy, and Location properly · whatwg/html@acae3df ( 版) <https://github.com/whatwg/html/commit/acae3df652b382e9f4f1d1b4dc7e08e2b00df821>

[18] Merge effective script origin into origin · whatwg/html@8a843f2 ( 版) <https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275>

[39] Editorial: turn "exceptions enabled" into a flag ( (annevk著, )) <https://github.com/whatwg/html/commit/879edbfcb25586caec8df93f303a434a700a18bc>

[40] Bug 158061 – location.href and location.assign() differ in Referer ( ()) <https://bugs.webkit.org/show_bug.cgi?id=158061>

[41] 17041 – Setting location before the page is done loading shouldn't always be a replace load ( ()) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=17041>