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

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

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

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

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

この記事で分かること

  • iframecontentWindowcontentDocument の違い
  • iframe 内部の DOM を操作する方法
  • 同一オリジン制限でできること・できないこと
  • 実務で iframe を扱う際の注意点

iframe 内部を JavaScript で操作するには、contentWindowcontentDocument の違いを正しく理解する必要があります。
この記事では、iframe の DOM 操作の基本から、同一オリジン制限や実務で注意すべきポイントまで分かりやすく解説します。



iframe 内部を操作するには contentWindow / contentDocument を使う

iframe はページの中に別ページを埋め込むための要素です。
JavaScript から iframe 内部を操作するには、以下の2つを使います。

  • contentWindowiframe 内部の window オブジェクト
  • contentDocumentiframe 内部の document オブジェクト

つまり、window を触りたいなら contentWindow、DOM を触りたいなら contentDocument を使います。

contentWindow の基本

iframewindow オブジェクトにアクセスできます。


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

console.log(win.location.href);

window オブジェクトなので、以下のような操作も可能です。

  • location の参照
  • 関数の実行
  • 変数の参照



contentDocument の基本

iframe 内部の DOM を操作できます。


const iframe = document.getElementById("myFrame");
const doc = iframe.contentDocument;

const title = doc.querySelector("h1").textContent;
console.log(title);

iframe 内の HTML を書き換えることもできます。


doc.body.style.background = "lightyellow";

同一オリジン制限に注意

iframe 内のページが 別ドメイン の場合、
contentWindowcontentDocument にアクセスするとエラーになります。

  • 同じドメイン → 操作可能
  • 異なるドメイン → 操作不可(セキュリティ制限)

例:以下は操作できないケース


<iframe src="https://example.com"></iframe>

外部サービスを埋め込む場合は、
postMessage を使った通信が一般的です。

iframe の読み込み完了後に操作する(onload

iframe は読み込みが完了する前に DOM を触るとエラーになるため、
onload を使うのが安全です。


iframe.onload = () => {
  const doc = iframe.contentDocument;
  console.log(doc.body.innerHTML);
};

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

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

  • iframe 内部の DOM 操作を体系的に理解したい
  • contentWindowcontentDocument の違いを正しく押さえたい
  • 同一オリジン制限など、実務で必須の知識を整理して学びたい

iframe の内部操作は、
JavaScript の DOM・window オブジェクト・同一オリジン制限 の理解が欠かせません。
書籍ではこれらの基礎を順序立てて学べるため、iframe を安全に扱うための土台 がしっかり身につきます。

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

図解が多く、JavaScript の基本文法やブラウザの仕組みを視覚的に理解できる入門書です。
window / document の関係や DOM の基礎が丁寧に解説されているため、
contentWindowcontentDocument の理解にもつながります。

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

  • DOM と window の関係が体系的に理解できる
  • iframe 内部を操作するための基礎知識が身につく
  • 実際に動くサンプルでブラウザの仕組みを深く理解できる

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

DOM 操作・イベント・ブラウザ API など、実務で必要な JavaScript を深く学べる入門書です。
iframe 内部の操作に欠かせない
window / document の扱い をしっかり理解できます。

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

  • contentWindowcontentDocument の役割を正しく理解できる
  • DOM を安全に操作するための実務的な知識が身につく
  • 同一オリジン制限など、iframe を扱う際の注意点が整理できる

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

iframe の内部操作は、
実際の画面を見ながら学ぶと理解が一気に深まります。
動画では「DOM がいつ取得できるのか」「onload の必要性」などが
そのまま確認でき、初心者でも直感的に理解できます。

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

DOM・イベント・ブラウザ API など、iframe 操作の前提となる基礎を体系的に学べる人気講座です。

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

  • DOM と window の関係を視覚的に理解できる
  • iframe の読み込みタイミング(onload)が理解できる
  • 初心者がつまずきやすい同一オリジン制限の概念を丁寧に解説

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

超JavaScript 完全ガイド 2026

実務で必要なブラウザ操作・API・DOM 制御を深く理解したい方に最適な講座です。
iframe の内部操作や安全な通信(postMessage)の理解にも役立ちます。

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

  • contentWindow / contentDocument の実践的な使い方が身につく
  • 同一オリジン制限を踏まえた安全な実装方法が理解できる
  • 現代的な JavaScript の書き方をまとめて習得

超JavaScript 完全ガイド 2026(Udemy)

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

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

  • contentWindowcontentDocument の違いが曖昧なままになる
  • iframe の読み込みタイミング(onload)でつまずきやすい
  • 同一オリジン制限の理解が断片的になりやすい
  • 外部サービス埋め込み時の安全な通信方法(postMessage)が分からない

スクールでは、プロの講師が学習ロードマップを作成し、
iframe の DOM 操作や
同一オリジン制限などの実務知識を体系的に理解できるようサポートしてくれます。

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

  • あなたのレベルに合わせた学習計画を作成
  • iframe の扱い方や注意点をプロが解説
  • 効率的な学習方法を提案してもらえる
  • エンジニア転職を視野に入れたキャリア相談も可能

JavaScript を効率よく学びたい方には、未経験からエンジニアを目指せる
DMM WEBCAMP の学習コースも選択肢のひとつです。

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



iframecontentWindow / contentDocument に関するよくある質問(FAQ)

Q1

contentWindowcontentDocument の違いは何ですか?

A

contentWindowiframe 内部の windowcontentDocumentdocument を参照します。DOM を触るなら contentDocument を使います。

Q2

iframe 内の DOM を操作できないのはなぜですか?

A

同一オリジン制限により、異なるドメインの iframe はセキュリティ上アクセスできません。

Q3

iframe の読み込み前に DOM を触るとどうなりますか?

A

contentDocumentnull になるため、onload で読み込み完了後に操作する必要があります。

Q4

外部サイトの iframe を操作する方法はありますか?

A

DOM 操作はできません。代わりに postMessage を使って安全に通信します。



まとめ

iframe の内部を操作するには、
contentWindow(window)contentDocument(document) を使います。

ただし、同一オリジン制限により、
別ドメインの iframe は操作できない ため注意が必要です。

実務では iframe の DOM 操作よりも、
postMessage を使った安全な通信が主流になっています。



関連記事

【JavaScript入門】Frameオブジェクトとframes配列の使い方|フレーム参照・frames.lengthをわかりやすく解説

この記事で分かること Frame オブジェクトの基本 frames 配列でのフレーム参照方法 frames.length による総数取得 DOM(getElementById)でのフレーム参照 フレー …

【JavaScript入門】frame.nameの使い方|フレーム名を取得する方法をわかりやすく解説

この記事で分かること frame.name の基本的な役割 フレーム名(name 属性)の取得方法 frames 配列との組み合わせ方 フレーム名を使うメリット HTML5 以降の注意点(非推奨・同一 …

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

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

【JavaScript入門】postMessageの使い方|iframe・別ウィンドウ間で安全にデータを送受信する方法を初心者向けに解説

この記事で分かること postMessage を使ったフレーム間通信の基本 iframe・別ウィンドウ・親子ウィンドウ間でのデータ送受信 origin チェックによるセキュリティ対策 実務での利用例と …

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

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

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

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

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

執筆者: