| この記事の要点 |
|---|
|
エラーの状況
// ダメな例
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 = "/";
}
}
関連記事
子ページ
子ページはありません
同階層のページ
- 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
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38