Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
- トップページ
- JavaScript辞典
- window.location / history
window.location / history
現在のページのURLに関する情報の取得やページ遷移を行います。『window.history』と組み合わせることで、ブラウザの履歴操作も可能です。
構文
// 現在のURLを取得します。 var url = window.location.href; // ページを移動します。 window.location.href = "移動先のURL"; // ページを再読み込みします。 window.location.reload(); // ブラウザの履歴を操作します。 window.history.back(); window.history.forward(); window.history.pushState(状態, タイトル, "URL");
window.locationのプロパティ・メソッド
| プロパティ / メソッド | 概要 |
|---|---|
| location.href | 現在のページのURL全体を文字列で返します。値を代入するとそのURLに移動します。 |
| location.hostname | ドメイン名を返します。例えば『example.com』のような文字列です。 |
| location.pathname | URLのパス部分を返します。例えば『/products/list.html』のような文字列です。 |
| location.search | URLのクエリ文字列を返します。例えば『?id=123&page=2』のような文字列です。 |
| location.hash | URLのハッシュ部分を返します。例えば『#section1』のような文字列です。 |
| location.protocol | プロトコルを返します。『https:』や『http:』のような文字列です。 |
| location.reload() | 現在のページを再読み込みします。 |
| location.replace("URL") | 指定したURLに移動します。『href』との違いは、履歴に残らないためブラウザの「戻る」ボタンで戻れないことです。 |
window.historyのメソッド
| メソッド | 概要 |
|---|---|
| history.back() | ブラウザの「戻る」ボタンと同じ動作で、1つ前のページに戻ります。 |
| history.forward() | ブラウザの「進む」ボタンと同じ動作で、1つ先のページに進みます。 |
| history.go(数値) | 指定した数だけ履歴を移動します。『-1』で1つ戻り、『1』で1つ進み、『0』でページを再読み込みします。 |
| history.pushState(状態, タイトル, "URL") | ページを再読み込みせずにURLを変更し、履歴に新しいエントリを追加します。シングルページアプリケーションで使用されます。 |
| history.replaceState(状態, タイトル, "URL") | ページを再読み込みせずにURLを変更します。『pushState()』との違いは、履歴に新しいエントリを追加せず、現在のエントリを書き換えることです。 |
サンプルコード
// 現在のURL情報を取得する例
// URL: https://example.com/products/list.html?id=123#section1
console.log(location.href); // 『https://example.com/products/list.html?id=123#section1』と出力されます。
console.log(location.hostname); // 『example.com』と出力されます。
console.log(location.pathname); // 『/products/list.html』と出力されます。
console.log(location.search); // 『?id=123』と出力されます。
console.log(location.hash); // 『#section1』と出力されます。
// ページ遷移
location.href = "https://example.com/new-page"; // 新しいページに移動します。
location.replace("https://example.com/login"); // 履歴に残さずに移動します。
location.reload(); // ページを再読み込みします。
// 履歴操作
history.back(); // 1つ前のページに戻ります。
history.go(-2); // 2つ前のページに戻ります。
// pushState()でURLを変更します。ページの再読み込みは発生しません。
history.pushState({ page: 2 }, "", "/products?page=2");
実行結果
URL情報の取得部分を実行すると、コンソールには以下のように出力されます。
"https://example.com/products/list.html?id=123#section1" "example.com" "/products/list.html" "?id=123" "#section1"
概要
『window.location』は現在のページのURL情報を管理するオブジェクトです。URLの各部分を個別に取得できるため、ページのパスやクエリ文字列に応じた処理を行う際に活用します。
『window.history』はブラウザの閲覧履歴を操作するためのオブジェクトです。『history.pushState()』を使うとページを再読み込みせずにURLを変更でき、ReactやVue.jsなどのフレームワークで構築するシングルページアプリケーションのルーティングで欠かせない機能となっています。
『location.href』と『location.replace()』はどちらもページを移動しますが、『location.replace()』は履歴に残らないため、ブラウザの「戻る」ボタンで元のページに戻ることができません。ログイン後のリダイレクトなど、ユーザーに戻ってほしくないケースで使い分けてください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。