HTTP/2 200
content-type: text/html
x-guploader-uploadid: AAwnv3Kpxy0kN1j0o3j7DbxZ9Hr1KPowLgTMGRxnefyhrGY1hfteCEtnh2qdjwkYPADg6Iqf4q5DXQI
cache-control: public, max-age=3600
expires: Sat, 11 Oct 2025 01:44:28 GMT
last-modified: Fri, 10 Oct 2025 01:11:00 GMT
etag: W/"c46708e1408c0fb1f2c9c26ef9015263"
x-goog-generation: 1760058660657316
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 159061
x-goog-meta-goog-reserved-file-mtime: 1760056915
x-goog-hash: crc32c=hNeflQ==, md5=xGcI4UCMD7HyycJu+QFSYw==
x-goog-storage-class: STANDARD
accept-ranges: none
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
alt-svc: clear
referrer-policy: strict-origin-when-cross-origin
x-content-type-options: nosniff
strict-transport-security: max-age=63072000
content-security-policy: default-src 'self'; script-src 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; script-src-elem 'report-sample' 'self' 'wasm-unsafe-eval' https://www.google-analytics.com/analytics.js https://www.googletagmanager.com/gtag/js assets.codepen.io production-assets.codepen.io https://js.stripe.com 'sha256-XNBp89FG76amD8BqrJzyflxOF9PaWPqPqvJfKZPCv7M=' 'sha256-YCNoU9DNiinACbd8n6UPyB/8vj0kXvhkOni9/06SuYw=' 'sha256-PZjP7OR6mBEtnvXIZfCZ5PuOlxoDF1LDZL8aj8c42rw='; style-src 'report-sample' 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; connect-src 'self' developer.allizom.org bcd.developer.allizom.org bcd.developer.mozilla.org updates.developer.allizom.org updates.developer.mozilla.org https://*.google-analytics.com https://*.analytics.google.com https://*.googletagmanager.com https://incoming.telemetry.mozilla.org https://observatory-api.mdn.allizom.net https://observatory-api.mdn.mozilla.net https://api.github.com/search/issues stats.g.doubleclick.net https://api.stripe.com; font-src 'self'; frame-src 'self' interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net mdn.github.io live-samples.mdn.mozilla.net live-samples.mdn.allizom.net *.mdnplay.dev *.mdnyalp.dev *.play.test.mdn.allizom.net https://v2.scrimba.com https://scrimba.com jsfiddle.net www.youtube-nocookie.com codepen.io survey.alchemer.com https://js.stripe.com; img-src 'self' data: *.githubusercontent.com *.googleusercontent.com *.gravatar.com mozillausercontent.com firefoxusercontent.com profile.stage.mozaws.net profile.accounts.firefox.com developer.mozilla.org mdn.dev interactive-examples.mdn.mozilla.net interactive-examples.mdn.allizom.net wikipedia.org upload.wikimedia.org https://mdn.github.io/shared-assets/ https://mdn.dev/ https://*.google-analytics.com https://*.googletagmanager.com www.gstatic.com; manifest-src 'self'; media-src 'self' archive.org videos.cdn.mozilla.net https://mdn.github.io/shared-assets/; child-src 'self'; worker-src 'self';
x-frame-options: DENY
origin-trial: AxVILwizhbMjxFeHOn1P3R8niO1RJY/smaK4B4d1rLzc1gTaxtXMSaTi+FoigYgCw40uFRDwFcEAeqDR+vVLOW4AAABfeyJvcmlnaW4iOiJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZyIsImZlYXR1cmUiOiJQcml2YXRlQXR0cmlidXRpb25WMiIsImV4cGlyeSI6MTc0MjA3OTYwMH0=
x-cloud-trace-context: dd491a79e428e6d24bf7c06ab7772d44
date: Sat, 11 Oct 2025 00:44:29 GMT
server: Google Frontend
via: 1.1 google
vary: Accept-Encoding
content-encoding: gzip
x-cache: miss
History: pushState() メソッド - Web API | MDN
pushState(state, unused)
pushState(state, unused, url)
state
この state
(状態)オブジェクトは、pushState()
によって作られる新しい履歴項目に関連した JavaScript オブジェクトです。ユーザーが新規の state
に移動したときはいつも、 popstate
イベントが発行され、イベントの state
プロパティは、履歴項目の state
オブジェクトのコピーを含みます。
state
オブジェクトは、シリアライズ可能なあらゆものとなりえます。 Firefox では状態オブジェクトをユーザーのディスクに保存してブラウザーを再起動した後にも復帰できるため、 state
オブジェクトのシリアライズ表現に 16 MiB の上限を課しています。これを超える大きさの状態オブジェクトを pushState()
に渡した場合、このメソッドで例外が発生します。これ以上のスペースが必要な場合、sessionStorage
や localStorage
を使用することをお勧めします。
unused
この引数は歴史的な理由のために存在しており、省略することはできません。空文字を渡すことが、将来このメソッドに変更が加えられたときに安全です。
url
省略可
新しい履歴項目の URL は、この引数で与えられます。ブラウザーは pushState()
を呼び出した後もこの URL を読み込もうとせずに、例えばユーザーがブラウザーを再起動した後など、後で URL を読み込む場合もあるのにご注意ください。新しい URL は絶対パスとは限りません。つまり相対パスの場合、現在の URL から相対的に解決されます。新しい URL は現在の URL と同一オリジン でなければならず、そうでない場合、pushState()
で例外が発生します。この引数が指定されなかった場合、この文書の現在の URL が設定されます。
ある意味で、 pushState()
の呼び出しは window.location = "#foo"
と似ていて、両方とも現在の文書に関連した別の履歴項目を作成し、有効化します。
しかし pushState()
にはいくつかの利点があります。
新しい URL は現在の URL と同一オリジンにあるあらゆる URL にすることができます。それに対して、window.location
に設定した場合、ハッシュのみを変更したのであれば同じ文書にとどまります。
URL を変更することは必須ではありません。それに対して、 window.location = "#foo";
を設定する場合は、現在のハッシュが #foo
でない場合のみ新規の履歴項目を作成します。
履歴項目に任意のデータを関連づけることができます。ハッシュベースのアプローチでは、関連するデータすべてを短い文字列にエンコードする必要があります。
pushState()
は hashchange
イベントを発行しません。新 URL が旧 URL とハッシュだけ異なる場合でもそうなることに気をつけてください。
これはブラウザーの履歴項目に state と url を設定したものを作成します。
const state = { page_id: 1, user_id: 5 };
const url = "hello-world.html";
history.pushState(state, "", url);
const url = new URL(location);
url.searchParams.set("foo", "bar");
history.pushState({}, "", url);