ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
エラーの状況
// ダメな例
location.href("https://example.com");
// → Uncaught TypeError: location.href is not a function
// または
window.location.href();
// → TypeError
location.href はプロパティ(文字列)であり、関数ではないので括弧 () を付けて呼べません。
正しい使い方
① 現在 URL を取得
// 文字列として取得
const url = location.href;
console.log(url);
// → "https://example.com/page?tab=info#section"
// または window. を付けても同じ
const url2 = window.location.href;
② ページ遷移(URL 設定)
// 代入で遷移
location.href = "https://example.com";
// 履歴に残らない遷移 (戻るで戻れない)
location.replace("https://example.com");
// 履歴に残る遷移 (戻るで戻れる)
location.assign("https://example.com");
// 関数として呼ぶなら assign / replace
location.assign("/login");
location.replace("/dashboard");
location オブジェクトの全プロパティ
すべてプロパティ(関数ではない):
| プロパティ | 取得 | 設定(変更で遷移) |
|---|---|---|
location.href | 完全 URL | ○ 全 URL 変更 |
location.origin | プロトコル+ホスト | × |
location.protocol | http: / https: | ○ プロトコル変更 |
location.host | ホスト+ポート | ○ |
location.hostname | ホストのみ | ○ |
location.port | ポート | ○ |
location.pathname | パス | ○ パス変更(同オリジン) |
location.search | ?以降のクエリ | ○ |
location.hash | #以降のハッシュ | ○ ハッシュ変更(リロードなし) |
location の関数(メソッド)
| 関数 | 用途 |
|---|---|
location.assign(url) | URL 遷移(履歴に残る) |
location.replace(url) | URL 遷移(履歴に残らない) |
location.reload() | 現在ページを再読み込み |
location.reload(true) | キャッシュを使わず再読み込み(非推奨・廃止予定) |
遷移パターン別の使い分け
// 通常の遷移(戻るボタンで戻れる)
location.href = "/page";
// または
location.assign("/page");
// ログイン後のリダイレクト(戻るで戻られたくない)
location.replace("/dashboard");
// 同ページの別アンカー(リロードなし)
location.hash = "#section2";
// クエリパラメータ更新
const params = new URLSearchParams(location.search);
params.set("page", "2");
location.search = "?" + params.toString();
// 強制リロード
location.reload();
// 別オリジン
location.href = "https://example.com";
関連: window.open / history.pushState
// 新しいタブ / ウィンドウで開く
window.open("https://example.com", "_blank");
// History API で URL 変更(ページリロードなし、SPA で多用)
history.pushState({}, "", "/new-path");
history.replaceState({}, "", "/new-path"); // 履歴を置き換え
// 戻る/進む
history.back();
history.forward();
history.go(-2); // 2 つ戻る
よく似たタイポによるエラー
| 誤 | 正 | 原因 |
|---|---|---|
location.href() | location.href | プロパティを関数呼び出し |
location.href = url() | location.href = url | url が関数なら呼び出し OK だが、文字列なら不要 |
location.assign = url | location.assign(url) | 関数を代入で上書き |
window.location() | window.location | location 自体は object |
location.reload(url) | location.href = url | reload は引数を受け取らない |
セキュリティ注意
外部入力をそのまま location.href に代入するのは XSS / Open Redirect の温床:
// 危険
const next = new URLSearchParams(location.search).get("next");
location.href = next; // ← next が "javascript:..." だと XSS
// 安全策
function safeRedirect(url) {
// 同オリジンのみ許可
try {
const u = new URL(url, location.origin);
if (u.origin === location.origin) {
location.href = u.pathname + u.search + u.hash;
} else {
location.href = "/"; // フォールバック
}
} catch (e) {
location.href = "/";
}
}
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- Uncaught TypeError: Illegal invocation
- Form submission canceled because the form is not connected
- Uncaught TypeError: location.href is not a function
- Access to XMLHttpRequest at 'url1' from origin 'url2' has been blocked
- Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?