window.location / history
| 対応: | ES1(ECMAScript 1997) |
|---|
現在のページの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()』との違いは、履歴に新しいエントリを追加せず、現在のエントリを書き換えることです。 |
サンプルコード
sample_windowLocation.js
// パターン1: 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』と出力されます。
sample_windowLocation.js
// パターン2: クエリ文字列を解析して値を取り出す
// URL: https://example.com/items?category=book&page=3
var params = new URLSearchParams(location.search);
console.log(params.get("category")); // 『book』と出力されます。
console.log(params.get("page")); // 『3』と出力されます。
// キーが存在しない場合はnullを返します。
console.log(params.get("sort")); // 『null』と出力されます。
sample_windowLocation.js
// パターン3: pushState()でURLを変更しつつページ内状態を更新する
// ページの再読み込みなしにURLが変わります。
function showPage(num) {
history.pushState({ page: num }, "", "/items?page=" + num);
document.getElementById("content").textContent = num + "ページ目を表示中";
}
showPage(2); // URLが /items?page=2 に変わります。
showPage(3); // URLが /items?page=3 に変わります。
// ブラウザの「戻る」ボタンが押された時の処理
window.addEventListener("popstate", function(e) {
if (e.state) {
document.getElementById("content").textContent = e.state.page + "ページ目を表示中";
}
});
sample_windowLocation.js
// パターン4: ページ遷移と再読み込み
location.href = "https://example.com/new-page"; // 新しいページに移動します。
location.replace("https://example.com/login"); // 履歴に残さずに移動します。
location.reload(); // ページを再読み込みします。
// 履歴操作
history.back(); // 1つ前のページに戻ります。
history.go(-2); // 2つ前のページに戻ります。
概要
『window.location』は現在のページのURL情報を管理するオブジェクトです。URLの各部分を個別に取得できるため、ページのパスやクエリ文字列に応じた処理を行う際に活用します。
『window.history』はブラウザの閲覧履歴を操作するためのオブジェクトです。『history.pushState()』を使うとページを再読み込みせずにURLを変更でき、ReactやVue.jsなどのフレームワークで構築するシングルページアプリケーションのルーティングで欠かせない機能となっています。
『location.href』と『location.replace()』はどちらもページを移動しますが、『location.replace()』は履歴に残らないため、ブラウザの「戻る」ボタンで元のページに戻ることができません。ログイン後のリダイレクトなど、ユーザーに戻ってほしくないケースで使い分けてください。
対応ブラウザ
デスクトップ
2 以前 ×
2 以前 ×モバイル
Android Browser
37 以降 ○
2 以前 ×
Chrome Android
36 以降 ○
17 以前 ×
Firefox Android
79 以降 ○
3 以前 ×記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。