

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
DOMContentLoadedとOnLoadの違いを徹底解説:ウェブページの読み込みとイベントの順番
ウェブページを開くと、ブラウザはHTMLを上から順番に解釈して DOM ツリーを組み立て、CSSを適用して、画像や動画などのリソースを読み込みます。この過程で、DOMContentLoaded と onload という2つのイベントが関係してきます。
DOMContentLoaded は、HTMLが完全にパースされ DOM が構築された直後に発火します。画像などの外部リソースはまだ読み込み中であっても、ページの基本的な構造を操作する準備が整った状態です。
これに対して onload は、ページ内のすべてのリソースが読み込み完了した時点で発生します。つまり、画像の読み込みが終わって表示が安定した瞬間を待つのではなく、全資源の読み込みが終わった後の「完全完成」タイミングです。
この二つは、用途が異なるため使い分けが大切です。例えば、初期表示を速くしたいときは DOMContentLoaded のタイミングで処理を走らせ、表示が安定してから別の作業をする、というのが実務での基本的な考え方です。
1. 発火のタイミングを正しく理解する
発火の順番を正しく理解することは、どんなスクリプトを書くときにも役立ちます。DOMContentLoaded は、HTMLが完全にパースされ DOM が構築された直後に発火します。画像などの外部リソースはまだ読み込み中でも、JS が DOM にアクセスして安全に操作できます。これを活用して、初期のメニューを用意したり、イベントリスナーを設定したりします。一方、onload は、ページ内のすべてのリソースが読み込み完了した後の「完全完成」の瞬間です。たとえば写真のサイズが決まる前に行う処理は失敗することがありますので、onload を待つ場面は限られます。実務では、次のように使い分けると安定します。文書の表示を速くしたい場合は DOMContentLoaded で DOM の操作を開始し、画像の遅延読み込みや広告の挿入など、描画が完了してから行いたい処理は onload 待ちで組みます。さらに、複雑なページでは、イベントの順序をチームで共有するためのコメントを残すと理解が深まります。
2. 実務での使い分けのコツ
現場のコツは、目的別に分けて考えることです。ページの初期表示を速くするなら DOMContentLoaded を活用して DOM 操作を先行させ、onload を待つべき場面には遅延処理として組み込みます。たとえば、画像のプレースホルダーを先に表示し、実際の画像が読み込まれてから正式な表示に切替えるのは典型的な使い方です。外部スクリプトの読み込みと同時にサーバーと通信を開始したい場合、DOMContentLoaded 後すぐにデータを取得する処理を書けば、最初の表示を妨げません。加えて、複雑なページでは、処理の順序を明示するコメントを残すとチーム全体の理解が深まります。
結論として、DOM 関連の作業とリソースの読み込みに応じた処理を分けて実装することが、ウェブ開発の安定性を上げるコツです。要点を抑えて、実際のコードにも反映させましょう。
ある日のブラウザの話。僕は友達とウェブページを作っていて、ちょっとした混乱に陥った。開発者ツールを覗くと、最初に起こるのは DOMContentLoaded なのか、それとも すべての画像が読み込まれた後の onload なのか。結局、 DOMContentLoaded は HTML が骨組みを作り終えた瞬間で、そこから JS で DOM にアクセスして操作を始められる。対して onload はすべてのリソースが読み込まれた後の「完全完成」タイミングだ。だから、僕は初期表示を速くしたいときは DOMContentLoaded のタイミングで処理を走らせ、画像の遅延表示や広告の挿入などは onload 待ちで行う。こうして順序をはっきりさせると、ページの動作が安定して見た目も崩れにくくなるんだ。