現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

Frame(フレーム・親子ウィンドウ)

【JavaScript入門】iframeの履歴操作(history.back)の仕組み|親ウィンドウとの違い・注意点を初心者向けに解説

投稿日:2026年5月16日 更新日:

この記事で分かること

  • iframe 内の history.back の挙動
  • 親ウィンドウと iframe の履歴の違い
  • 同一オリジン制限による制約
  • 実務での注意点(戻るボタン問題)

iframe と親ウィンドウはそれぞれ独立した履歴を持つため、history.back() の挙動もまったく別に動きます。
この記事では、iframe 内での戻る処理の仕組みや同一オリジン制限、さらに実務で問題になりやすい「戻るボタン問題」について分かりやすく解説します。



iframe と親ウィンドウは「別々の履歴」を持つ

JavaScript の history.back() は、
「現在の window(ウィンドウ)」の履歴を操作します。

つまり、以下のように履歴は完全に独立しています。

  • 親ウィンドウの履歴
  • iframe 内の履歴

そのため、iframe 内で history.back() を実行しても、
親ウィンドウには影響しません



iframe 内で history.back() を実行する例


// iframe 内のページで実行
history.back();

これは iframe 内のページ遷移だけを戻します。

親ウィンドウから iframe の履歴を操作する

同一オリジンであれば、
親ウィンドウから iframehistory にアクセスできます。


const iframe = document.getElementById("myFrame");
iframe.contentWindow.history.back();

ただし、別ドメインの場合は同一オリジン制限で操作できません

iframe 内の戻るボタンを作る例


document.getElementById("backBtn").addEventListener("click", () => {
  history.back();
});

iframe 内の履歴が 1 ページもない場合は何も起こりません。

親ウィンドウの履歴を操作する方法

iframe 内から親ウィンドウの履歴を操作したい場合は、
window.parent.history を使います。


// iframe 内のコード
window.parent.history.back();

ただし、こちらも同一オリジンである必要があります。

戻るボタン問題:iframe は UX を悪化させやすい

iframe を使うと、以下のような UX 問題が起きやすくなります。

  • ブラウザの戻るボタンが iframe の履歴を操作しない
  • ユーザーが「戻れない」と感じる
  • iframe 内の履歴が深くなると混乱する

そのため、実務では iframe 内で複雑なページ遷移を行うのは避けられます。

実務での対策

  • iframe 内でページ遷移を行わない(単一ページ構成)
  • postMessage を使って親ウィンドウに通知する
  • iframe 内の戻るボタンを明示的に設置する

特に「戻るボタンを iframe 内に設置する」方法は
ユーザーの混乱を防ぐために有効です。

JavaScript 初心者におすすめの学習書籍

書籍で学ぶのが向いている人

  • iframe と親ウィンドウの「別々の履歴」の仕組みを理解したい
  • history.back() の挙動を正しく把握したい
  • 同一オリジン制限による履歴操作の制約を体系的に学びたい
  • ネット記事だけだと情報が断片的に感じる

iframe と親ウィンドウは完全に独立した履歴を持つため、
history.back() の挙動もまったく異なります。
書籍ではブラウザの仕組みやウィンドウモデルを順序立てて学べるため、
「なぜ戻るボタンが効かないのか」などの疑問を根本から理解できます。

いちばんやさしい JavaScript の教本

図解が多く、JavaScript の基本文法やブラウザの動作を視覚的に理解できる入門書です。
ウィンドウ・イベント・ページ遷移など、iframe の履歴理解に必要な基礎が自然に身につきます。

この本で解決できること:

  • ブラウザの履歴モデル(History API)の基礎が理解できる
  • window ごとに履歴が独立する理由が分かる
  • 戻る処理の仕組みを正しく把握できる

確かな力が身につく JavaScript「超」入門

実務で必要なブラウザ操作・イベント制御・画面遷移の理解を深めたい方に最適な入門書です。
iframe の履歴操作や、同一オリジン制限による制約など、
Web アプリ開発で避けて通れないポイントをしっかり学べます。

この本で解決できること:

  • history.back() の正しい挙動を体系的に理解できる
  • 親ウィンドウと iframe の履歴操作の違いが分かる
  • 戻るボタン問題(UX)の原因と対策を学べる

動画で理解を深めたい方へ(Udemy講座)

iframe の履歴は文章だけではイメージしづらく、
実際に「どの履歴が戻るのか」「親ウィンドウに影響するのか」を
画面で確認すると理解が一気に深まります。

初心者のためのJavaScript 完全入門

JavaScript の基本文法からブラウザの仕組みまで体系的に学べる人気講座です。
window の概念やページ遷移の仕組みなど、
iframe の履歴理解に必要な基礎がしっかり身につきます。

この講座で解決できること:

  • history.back() の動作を視覚的に理解できる
  • 親ウィンドウと iframe の履歴の違いが明確になる
  • 同一オリジン制限による履歴操作の制約が分かる

初心者のためのJavaScript 完全入門(Udemy)

超JavaScript 完全ガイド 2026

実務で必要なブラウザ操作・イベント制御・画面遷移を深く理解したい方に最適な講座です。
戻るボタン問題(UX)や、postMessage を使った対策など、
実務で役立つ知識も学べます。

この講座で解決できること:

  • iframe 内の履歴操作の仕組みを実例で理解できる
  • 親ウィンドウとの連携方法(window.parent)が分かる
  • UX を損なわない戻る処理の設計方法を習得できる

超JavaScript 完全ガイド 2026(Udemy)

体系的に学びたい方へ(スクールという選択肢)

独学の限界を感じやすいポイント

  • iframe と親ウィンドウの履歴の違いが曖昧なままになる
  • history.back() の挙動を誤解しやすい
  • 同一オリジン制限による履歴操作の制約が理解しづらい
  • 戻るボタン問題(UX)の対策に自信が持てない

スクールでは、プロの講師が学習ロードマップを作成し、
iframe の履歴モデルや
history.back() の正しい使い方を
体系的に理解できるようサポートしてくれます。

無料相談で得られるメリット

  • あなたのレベルに合わせた学習計画を作成
  • 履歴操作や UX 改善のアドバイスがもらえる
  • 効率的な学習方法をプロが提案
  • エンジニア転職を視野に入れたキャリア相談も可能

Web アプリ開発で必要なブラウザ理解を深めたい方には、
DMM WEBCAMP の学習コースも選択肢のひとつです。

DMM WEBCAMP 学習コース(無料相談はこちら)



iframe の履歴操作に関するよくある質問(FAQ)

Q1

iframe 内の history.back() は親ウィンドウに影響しますか?

A

影響しません。iframe と親ウィンドウは別々の履歴を持つため、互いに干渉しません。

Q2

親ウィンドウから iframe の履歴を戻すことはできますか?

A

同一オリジンであれば可能です。iframe.contentWindow.history.back() を使います。

Q3

iframe 内から親ウィンドウの履歴を戻すことはできますか?

A

同一オリジンであれば window.parent.history.back() で可能です。

Q4

iframe の履歴が UX を悪化させるのはなぜですか?

A

ブラウザの戻るボタンが iframe の履歴を操作しないため、ユーザーが「戻れない」と感じやすいからです。



まとめ

iframe と親ウィンドウは
完全に別々の履歴を持つ ため、
history.back() の挙動も独立しています。

  • iframe 内の history.back()iframe の履歴だけ戻る
  • 親ウィンドウの履歴は影響を受けない
  • 同一オリジンでなければ履歴操作は不可

実務では iframe の履歴操作は UX を悪化させることが多いため、
必要に応じて戻るボタンや postMessage を使うのが一般的です。



関連記事

【JavaScript入門】フレームのセキュリティ制限とは?同一オリジンポリシーとiframeの制約を初心者向けに解説

この記事で分かること 同一オリジンポリシーとは何か iframe・子ウィンドウで禁止される操作 アクセス可能なケースと不可能なケース postMessage や sandbox を使った回避方法 We …

【JavaScript入門】window.openとopenerの使い方|親ウィンドウ・子ウィンドウの関係を初心者向けに解説

この記事で分かること window.open で新しいウィンドウを開く方法 opener を使った親ウィンドウ・子ウィンドウの関係 親ウィンドウから子ウィンドウを操作する方法 noopener などの …

【JavaScript入門】iframeの読み込み完了を検知する方法|onloadで安全にDOMへアクセスする手順を初心者向けに解説

この記事で分かること iframe の読み込み完了を検知する onload の使い方 読み込み前に DOM を触るとエラーになる理由 同一オリジン制限とアクセス可否 実務での iframe ロード処理 …

【JavaScript入門】frame.locationの使い方|フレームのURL(URI)を参照する方法をわかりやすく解説

この記事で分かること frame.location の基本的な役割 フレームが表示しているURL(URI)の取得方法 frames 配列との組み合わせ方 親フレーム・トップフレームからの参照方法 HT …

【JavaScript入門】iframeのcontentWindow・contentDocumentの使い方|内部ページの操作方法を初心者向けに解説

この記事で分かること iframe の contentWindow と contentDocument の違い iframe 内部の DOM を操作する方法 同一オリジン制限でできること・できないこと …

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

レンタルサーバー エックスサーバー

-Frame(フレーム・親子ウィンドウ)

執筆者: