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

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

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

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

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

この記事で分かること

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

iframe の DOM を操作するには、読み込み完了のタイミングを正しく検知することが重要です。
この記事では、onload を使った安全な操作方法や、同一オリジン制限によるアクセス可否、実務で注意すべきポイントを分かりやすく解説します。



iframe の DOM を触るには「読み込み完了」が必須

iframe は外部ページを読み込むため、
読み込みが完了する前に DOM を触るとエラー になります。

そのため、JavaScript では onload を使って
iframe が読み込まれたタイミング」を検知する必要があります。

基本:iframe.onload で読み込み完了を検知する


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

iframe.onload = () => {
  console.log("iframe の読み込みが完了しました");
};

onload が発火するのは、
iframe 内の HTML がすべて読み込まれた後 です。



読み込み完了後に DOM を操作する例


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

iframe.onload = () => {
  const doc = iframe.contentDocument;
  const title = doc.querySelector("h1").textContent;

  console.log("iframe 内のタイトル:", title);
};

読み込み前に contentDocument を触ると null になるため、
必ず onload 内で操作する必要があります。

addEventListener を使う書き方


iframe.addEventListener("load", () => {
  console.log("読み込み完了(addEventListener)");
});

複数の処理を登録したい場合はこちらが便利です。

同一オリジン制限に注意

iframe 内の DOM を操作できるのは
同一オリジン(同じドメイン) の場合のみです。

  • 同一ドメイン → DOM 操作可能
  • 別ドメイン → DOM 操作不可(セキュリティ制限)

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


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

この場合、onload は発火しますが、
contentDocument にアクセスするとエラー になります。

iframe の読み込みが遅い場合の対策

  • 読み込み中にローディング表示を出す
  • onload でローディングを消す
  • タイムアウト処理を入れる

特に外部サービスを iframe で読み込む場合、
読み込み時間が長くなることがあるため、
UX のためにローディング表示が推奨されます。

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

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

  • iframe の読み込みタイミング(onload)を正しく理解したい
  • DOM 操作・イベント処理・同一オリジン制限など基礎を体系的に学びたい
  • ネット記事だけだと情報が断片的に感じる

iframe の DOM を触るには、
JavaScript の イベント処理・読み込みタイミング・同一オリジン制限 の理解が欠かせません。
書籍ではこれらの基礎を順序立てて学べるため、onload を使った安全な操作方法が自然に身につきます。

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

図解が多く、JavaScript の基本文法やブラウザの動作を視覚的に理解できる入門書です。
iframe の読み込みタイミングやイベント処理など、
「なぜ読み込み前に DOM を触ると null になるのか?」といった基礎を丁寧に学べます。

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

  • onload の仕組みと読み込み完了の扱いが理解できる
  • DOM 操作の正しいタイミングが分かる
  • イベント処理の基礎が体系的に身につく

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

イベント・DOM 操作・非同期処理など、より実務的な JavaScript を学びたい方に最適な入門書です。
iframe の読み込み完了後に DOM を操作する流れや、
同一オリジン制限の考え方も理解できます。

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

  • onload を使った実践的な DOM 操作が身につく
  • 読み込み前に contentDocumentnull になる理由が理解できる
  • 現代的なイベント処理の書き方を習得できる

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

iframe の読み込み完了タイミングは、
実際の動作を画面で見ながら学ぶと理解が一気に深まります。
動画では「読み込み前は contentDocumentnull になる」などがそのまま確認でき、
初心者でも直感的に理解できます。

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

基本文法・イベント処理・ブラウザの動作など、onload の理解に必要な基礎を体系的に学べる人気講座です。

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

  • iframe の読み込み完了を視覚的に理解できる
  • 読み込み前と後で DOM がどう変わるかを確認できる
  • イベント処理の流れを丁寧に解説

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

超JavaScript 完全ガイド 2026

UI 操作・イベント制御・非同期処理など、実務で必要なブラウザ操作を深く理解したい方に最適な講座です。

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

  • onload を使った実践的な iframe 操作が身につく
  • 同一オリジン制限とアクセス可否の判断ができるようになる
  • 現代的な JavaScript の書き方をまとめて習得

超JavaScript 完全ガイド 2026(Udemy)

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

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

  • iframe の読み込みタイミングが曖昧なままになる
  • 読み込み前に DOM を触ってエラーになる理由が理解しづらい
  • 同一オリジン制限の概念が断片的になりやすい
  • 正しいイベント処理の順番に自信が持てない

スクールでは、プロの講師が学習ロードマップを作成し、
onload を含むイベント処理や
iframe の扱い方を体系的に理解できるようサポートしてくれます。

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

  • あなたのレベルに合わせた学習計画を作成
  • iframe の読み込み完了後の安全な DOM 操作を理解できる
  • 効率的な学習方法をプロが提案
  • エンジニア転職を視野に入れたキャリア相談も可能

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

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



iframe の読み込み検知に関するよくある質問(FAQ)

Q1

iframe の DOM を触ると null になるのはなぜですか?

A

読み込み前にアクセスしているためです。onload で読み込み完了後に操作する必要があります。

Q2

別ドメインの iframe の DOM を操作できますか?

A

できません。同一オリジン制限により、contentDocument へのアクセスはブロックされます。

Q3

onload は毎回発火しますか?

A

はい。iframesrc が変更されるたびに発火します。

Q4

読み込み完了前に処理を実行したい場合はどうすればいいですか?

A

iframe の DOM は触れません。ローディング表示など、外側の UI を制御するのが一般的です。



まとめ

iframe の DOM を操作するには、
onload で読み込み完了を検知することが必須 です。

読み込み前に contentDocument を触ると null になるため、
必ず onload 内で処理を書くようにしましょう。

また、別ドメインの iframe は DOM 操作できないため、
必要に応じて postMessage を使うのが安全です。



関連記事

【JavaScript入門】parent・top・selfの使い方|フレーム階層の参照方法をわかりやすく解説

この記事で分かること parent・top・self の基本的な役割 フレーム階層の参照方法 親フレーム・最上位フレーム・自分自身のフレームの違い 実際の使用例(フレーム間操作) HTML5 以降の注 …

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

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

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

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

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

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

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

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

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

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

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

執筆者: