History.replaceState()
History.replaceState()
メソッドは、現在の履歴を編集し、メソッドに引数で渡された状態オブジェクトや URL で置き換えます。このメソッドは、ユーザーのアクションに応じて現在の履歴項目の状態オブジェクトや URL を更新したい場合に特に便利です。
構文
history.replaceState(stateObj, unused)
history.replaceState(stateObj, unused, url)
引数
stateObj
-
状態オブジェクトは JavaScript オブジェクトで、
replaceState
メソッドに渡された履歴項目に関連付けられるものです。状態オブジェクトはnull
を指定することができます。 unused
-
この引数は歴史的な理由のために存在しており、省略することはできません。空文字を渡すことが、将来このメソッドに変更が加えられたときに安全です。
url
省略可-
履歴項目の URL です。新しい URL は現在の URL と同じオリジンでなければなりません。もしそうでないと、 replaceState で例外が発生します。
例
https://www.mozilla.org/foo.html
が以下の JavaScript を実行したとします。
const stateObj = { foo: 'bar' };
history.pushState(stateObj, '', 'bar.html');
上記の 2 行の説明は、履歴 API での作業の記事の pushState()
の例にあります。次に、 https://www.mozilla.org/bar.html
が以下の JavaScript を実行したとします。
history.replaceState(stateObj, '', 'bar2.html');
これにより、URL バーに https://www.mozilla.org/bar2.html
が表示されるようになりますが、ブラウザーが bar2.html
を読み込んだり、bar2.html
が存在するかどうかを確認したりすることはありません。
ユーザーが https://www.microsoft.com
に移動し、戻るボタンをクリックしたとします。この時点で、URL バーには https://www.mozilla.org/bar2.html
が表示されます。ユーザーがもう一度「戻る」ボタンをクリックすると、URL バーには https://www.mozilla.org/foo.html
が表示され、 bar.html は完全にバイパスされます。
仕様書
Specification |
---|
HTML Standard # dom-history-replacestate-dev |
ブラウザーの互換性
BCD tables only load in the browser