location.assign

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] 結果を、入口設定群オブジェクトに対して URLURLの構文解析した結果に設定します。
  4. [31] 結果失敗なら、
    1. [32] SyntaxError 例外投げてここで停止します。
  5. [30] 文脈オブジェクト結果URL記録について Location-object navigate を実行します。

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

  1. [2] URL を、第1引数を USVString として解釈した結果に設定します。
  2. [3] 結果を、入口設定群オブジェクトに対して URLURLの構文解析した結果に設定します。
  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.reloadnavigate を発生させますが、 処理は少し違っています。

[12] 仕様書上の手順である Location-object navigateLocation-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] それ以外で、オブジェクト関係するDocumentcompletely 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>