JavaScript DOMContentLoaded イベントのケーススタディ

JavaScript DOMContentLoaded イベントのケーススタディ

DOMContentLoaded イベント

文字通り、DOM がロードされた後に実行されます。

window.onload イベントと非常に似ていますが、いくつか違いがあります。

  1. ドキュメントが完全に読み込まれ解析された後に、DOMContentLoaded イベントがトリガーされます。
  2. window.onload イベントは、ドキュメントの読み込みと解析を完了するだけでなく、画像や CSS ファイルなどの関連リソースの読み込みも完了します。

次の疑問は、DOM がいつロードされるかということです。これはブラウザのレンダリングから始まります。ブラウザが Web ページを表示するプロセスは、次のように説明できます。

1. HTML ドキュメントを要求し、次にそのドキュメントに基づいてさらに img、css、およびその他のリソース ファイルを要求します。

2. ドキュメントを解析して、DOM ツリーと CSS ツリーの 2 つを取得します。

3. 上記の 2 つのツリーに基づいてレンダリング ツリーを生成します。

4. レンダリング ツリーに従ってレイアウトを実行し、関連する要素を描画します。

Webkit を例にとると、レンダリング プロセスは次のようになります。

DOMContentLoaded イベントは次の場合にトリガーされます:

DOM の後、RENDERtree の前。

JavaScript の読み込みと実行により、DOMContentLoaded イベントのトリガーが遅延されます。

ブラウザは JavaScript に DOM 要素情報が必要かどうかを判断できないため、JavaScript は CSS レンダリングが完了するまで待ってから読み込んで実行する必要があります。

JavaScript に最新の情報が確実に含まれるように、最初に CSS が読み込まれてレンダリングされます。

参考資料:

http://www.softwhy.com/article-9783-1.html

https://www.cnblogs.com/CandyManPing/p/6635008.html

https://www.cnblogs.com/caizhenbo/p/6679478.html

JavaScript DOMContentLoaded イベントの詳細なケースに関するこの記事はこれで終わりです。JavaScript DOMContentLoaded イベントの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript 学習概要 (I) ECMAScript、BOM、DOM (コア、ブラウザ オブジェクト モデル、ドキュメント オブジェクト モデル)
  • JavaScript における BOM と DOM の詳細な説明
  • Java による XML ファイルの解析と JSON の変換方法 (DOM4j 解析)
  • JavaScriptがDOMツリーの構築にどのように影響するかについて詳しく説明します。
  • JavaScript の contains には関数実装コード (拡張文字、配列、DOM) が含まれていますか?
  • JavaScript のドキュメント オブジェクト モデル (DOM)

<<:  Nginx/Httpd ロードバランシング Tomcat 設定チュートリアル

>>:  Linux スワップメモリ​​を拡張する方法

推薦する

Ubuntu 18.04 に phpMyAdmin をインストールするための詳細なチュートリアル

Ubuntu 18.04 上の Apache で動作するように phpMyAdmin をインストール...

HTML はモバイル上で固定フローティング半透明検索ボックスを実装します

質問。モバイルショッピングモールシステムでは、ページの上部に検索ボックスがよく見られます。ブロガーは...

ウェブページのコピー防止機能の実装方法(クラッキング手法付き)

ソース ファイルを右クリックすると、次のコードが見つかります。 1. CSSを使用してFirefox...

MySQL バッチ挿入ループの詳細なサンプルコード

背景数日前、MySql でページングを行っていたときに、ページングに制限 0,10 を使用するとデー...

MySQL データベース クエリ パフォーマンス最適化戦略

クエリを最適化するExplain ステートメントを使用してクエリ ステートメントを分析するExpla...

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

Mysql5.7 以降での ONLY_FULL_GROUP_BY エラーの解決方法

最近、開発プロセス中に、プロジェクト開発環境に接続されている MySQL データベースは Aliba...

Vue+Springbootでインターフェースシグネチャを実装するためのサンプルコード

1. 実装のアイデアインターフェース署名の目的は、リクエストパラメータが改ざんされていないか、リクエ...

mysql5.7 のエンコーディングを utf8mb4 に設定する方法

最近、問題に遭遇しました。モバイル端末の絵文字や一部の絵文字は 4 バイトですが、UTF-8 は 3...

Ubuntu 19.10 で ssh サービスを有効にする (詳細なプロセス)

Ubuntuでsshを開くのに1時間以上かかりました。主な原因は、最初に読んだチュートリアルの手順...

dl、dt、dd はいつ使用するのが適切ですか?

dl:定義一覧定義リストdt:定義タイトルタイトルを定義するdd:定義説明定義の説明dt は情報のタ...

マルチポートおよびマルチドメイン名アクセスのNginx構成の実装

サーバーに複数のサイトを展開するには、異なるサイトにアクセスするために複数のポートを開く必要がありま...

HTTP ステータス コード

このステータス コードは、リクエストのステータスに関する情報を提供し、サイトとリクエストされたページ...

MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって生じる DTS の落とし穴の詳細な説明

目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...

Link と @import の違いを詳しく見る

ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...