カテゴリ: JavaScript 更新日: 2026/07/21

JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう

JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう
JavaScriptのDOMContentLoadedとloadイベントの違いを理解しよう

先生と生徒の会話形式で理解しよう

生徒

「Webページが完全に読み込まれたタイミングで処理をしたい場合、どのイベントを使えばいいですか?」

先生

「JavaScriptには主にDOMContentLoadedとloadの2つのイベントがあります。それぞれ動作のタイミングが違うので使い分けが重要です。」

生徒

「違いって具体的には何ですか?」

先生

「簡単に言うと、DOMContentLoadedはHTMLの読み込みが終わったタイミング、loadは画像やスタイルシートなども含めたすべての読み込みが終わったタイミングで発火します。」

1. DOMContentLoadedイベントとは?

1. DOMContentLoadedイベントとは?
1. DOMContentLoadedイベントとは?

DOMContentLoadedは、HTML文書の解析が完了してDOMツリーが構築されたときに発火します。外部リソースの読み込みを待たずに実行できるので、スクリプトの初期化処理によく使われます。


document.addEventListener("DOMContentLoaded", () => {
  console.log("DOMの読み込みが完了しました。");
  const button = document.getElementById("myButton");
  button.addEventListener("click", () => {
    alert("ボタンがクリックされました!");
  });
});

このように、DOMが使える状態になったらすぐにスクリプトを実行できるので、ユーザーの操作に素早く対応できます。

2. loadイベントとは?

2. loadイベントとは?
2. loadイベントとは?

loadイベントは、ページ内のすべてのリソース、例えば画像、スタイルシート、iframeなどが完全に読み込まれたあとに発火します。ページ全体の読み込み完了を確認したい場合に使います。


window.addEventListener("load", () => {
  console.log("ページ全体の読み込みが完了しました。");
  const images = document.querySelectorAll("img");
  console.log("画像の数:", images.length);
});

画像が多いページではloadイベントの発火が遅れることがあります。ユーザーにすぐインタラクションを提供したい場合はDOMContentLoadedを使う方が適しています。

3. DOMContentLoadedとloadの使い分け

3. DOMContentLoadedとloadの使い分け
3. DOMContentLoadedとloadの使い分け

簡単に使い分けをまとめると次の通りです。

  • ページのHTML構造だけを操作したいとき → DOMContentLoaded
  • 画像や外部リソースの読み込み完了を待ってから処理したいとき → load

例えば、ページの初期化処理やボタンのクリックイベントの設定はDOMContentLoadedで十分です。一方で、ページ内のすべての画像を確認してレイアウトを調整したい場合はloadを使うと安全です。

4. 注意点とおすすめの書き方

4. 注意点とおすすめの書き方
4. 注意点とおすすめの書き方

非同期的にHTMLや画像が読み込まれる現代のWebでは、イベントのタイミングを正しく理解することが重要です。以下の点に注意しましょう。

  • JavaScriptをheadに書く場合はDOMContentLoadedでDOMを操作する。
  • 外部画像や大きなメディアファイルの読み込みに依存する処理はloadを使う。
  • 両方のイベントを混同すると、処理が早すぎたり遅すぎたりするのでタイミングを意識する。

正しいイベントを選ぶことで、ユーザーに快適な操作体験を提供できます。

5. 実務でよくある使い分けの具体例

5. 実務でよくある使い分けの具体例
5. 実務でよくある使い分けの具体例

実際の開発現場では、DOMContentLoadedとloadを状況に応じて使い分けることが重要です。例えばフォーム入力やボタン操作など、ユーザーの操作にすぐ反応したい処理はDOMContentLoadedが適しています。一方で画像サイズを取得してレイアウトを調整する場合は、画像の読み込み完了が必要なためloadを使う必要があります。


document.addEventListener("DOMContentLoaded", () => {
  const input = document.getElementById("name");
  input.addEventListener("input", () => {
    console.log("入力されました");
  });
});

入力イベントがすぐに反応する

このように、ユーザー操作系は早く動くDOMContentLoadedを使うのが基本です。

6. よくあるエラーと対処法

6. よくあるエラーと対処法
6. よくあるエラーと対処法

初心者の方がよく経験するのが、要素が取得できずにエラーになる問題です。これはDOMがまだ構築されていない状態で要素を取得しようとしている場合に発生します。この場合はDOMContentLoadedを使うことで解決できます。


const btn = document.getElementById("btn");
btn.addEventListener("click", () => {
  console.log("クリックされました");
});

エラーが発生する可能性がある

このコードはHTMLが読み込まれる前に実行されるとエラーになります。以下のように修正しましょう。


document.addEventListener("DOMContentLoaded", () => {
  const btn = document.getElementById("btn");
  btn.addEventListener("click", () => {
    console.log("クリックされました");
  });
});

安全にイベントが設定される

このようにイベントのタイミングを意識することで、安定したコードを書くことができます。

7. パフォーマンスとユーザー体験の関係

7. パフォーマンスとユーザー体験の関係
7. パフォーマンスとユーザー体験の関係

DOMContentLoadedとloadの選択は、パフォーマンスやユーザー体験にも大きく影響します。ページの表示が遅いとユーザーは離脱しやすくなるため、必要以上にloadを使うのは避けるべきです。特に画像が多いページでは、すべての読み込みを待つと処理が遅くなります。


window.addEventListener("load", () => {
  console.log("すべてのリソースが読み込まれました");
});

読み込み完了まで時間がかかる場合がある

一方で、必要な場面では確実にloadを使うことが重要です。例えば画像のサイズを使ってレイアウトを決める場合などです。状況に応じて最適なイベントを選ぶことが、快適なWebページ作成につながります。

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptローカルストレージとセッションストレージの違いを徹底解説!初心者向け保存機能ガイド
New2
JavaScript
JavaScriptのisNaN()とNumber.isNaN()の違いを理解しよう
New3
JavaScript
JavaScriptの配列型(Array)の基本と使い方まとめ
New4
Claude Code
Claude CodeでCSV読み込みと文字化け対策を相談する方法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptの比較演算子(==, ===, !=, !==)の違いを初心者向けにわかりやすく解説
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
No.4
Java&Spring記事人気No4
Claude Code
Claude CodeでCSV読み込みと文字化け対策を相談する方法
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptで「Hello World」を出力する手順と解説
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptの数値型(Number)の使い方と特徴まとめ
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptでZustandの状態に型を定義するベストプラクティス
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptでContext APIによる状態管理に型をつける方法!初心者向け完全ガイド