ホームページ ウェブフロントエンド jsチュートリアル jQueryのreadyイベントとloadイベント

jQueryのreadyイベントとloadイベント

Dec 16, 2016 am 10:49 AM

jQueryのreadyイベントとloadイベント(MOOC.comより)

jQueryにはドキュメントをロードするための3つのメソッドがあります

$(document).ready(function() { // ...code... }) // ドキュメントの準備ができました略語 $(function() { // ...code... }) $(document).load(function() { // ...code... })

1 つは準備ができており、もう 1 つは準備完了です負荷、この2つの違いは何ですか?

ready とload のどちらが最初に実行されますか:
面接プロセス中に、よく質問されます:ready とload のどちらが最初に実行され、どちらが最後に実行されますか?答えは、ready が最初に実行され、load が後で実行されるということです。

DOM ドキュメントの読み込み手順:
なぜ ready が最初に実行され、load が後で実行されるのかを理解するには、まず DOM ドキュメントの読み込み手順を理解する必要があります:

(1) HTML 構造を解析します。 (2) 外部スクリプトとスタイルシートファイルを読み込みます。 (3) スクリプトコードを解析して実行します。 (4) HTML DOM モデルを構築します。 //ready (5) 画像などの外部ファイルを読み込みます。 (6) ページがロードされます。 //load

上記の説明で、ready は手順 (4) が完了した後に実行されますが、load は手順 (6) が完了するまで実行されないことが理解できたと思います。

結論:

readyとloadの違いはリソースファイルのロードにあり、readyは基本的なDOM構造を構築するため、コードのロードは速いほど良いです。高速ブラウジングの時代では、誰も答えを待ちたくありません。 Web サイトのページの読み込みに 4 秒以上かかると、ユーザーの 4 分の 1 が失われることになるため、フレームワークではユーザー エクスペリエンスが非常に重要です。DOM を処理するのは早ければ早いほど良いのです。画像の場合は、すべてのリソースが読み込まれた後にのみフレームの読み込みを処理します。画像リソースが多すぎる場合、読み込みイベントは長時間トリガーされません。

jQuery がドキュメントの読み込みタイミングをどのように処理するかを見てみましょう:

jQuery.ready.PROmise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred() if ( document.readyState === "; complete" ) { // 非同期的に処理して、スクリプトに遅延の機会を与えますready setTimeout( jQuery.ready ); } else { document.addEventListener( "DOMContentLoaded",, false ); window.addEventListener ("load", completed , false );
jQuery 互換性のための具体的な戦略をご覧ください: 高度なブラウザーの場合、現時点では DOMContentLoaded イベントを喜んで使用し、時間と労力を節約します。

では、古い IE はどうすればよいのでしょうか?

引き続き jQuery ソリューションを見てみましょう:

// onload の前に確実に起動します。遅いかもしれませんが、iframe でも安全です document.attachEvent( "onreadystatechange", completed ); // window.onload へのフォールバック。これは常に機能します。 window.attachEvent( "onload", completed ); // IE でフレームではない場合 // ドキュメントの準備ができているかどうかを継続的に確認します var top = false; try { top = window.frameElement == null && document.documentElement; } catch (e) {} if ( top && top.doScroll ) { (function doScrollCheck() { ) if (!jQuery.isReady) { try { // Diego Perini によるトリックを使用します // http://javascript.nwbox .com/ / detach(); // 待機中の関数を実行します jQuery.ready(); } })(); }

ブラウザーに document.onreadystatechange イベントがある場合、イベントがトリガーされた場合。 readyState=complete の場合、DOM ツリーはロードされていると見なされます。ただし、このイベントはあまり信頼性がありません。たとえば、ページに画像がある場合、onload イベントの後にトリガーされる可能性があります。つまり、ページにバイナリ リソースが含まれていない場合、またはバイナリ リソースがほとんど含まれていない場合にのみ正しく実行されます。バックアップとしてキャッシュされます。

IEの読み込み検出

Diego Perini は、doScroll メソッド呼び出しを使用して、IE がロードされているかどうかを検出する方法を 2007 年に報告しました。詳細については、http://Javascript.nwbox.com/IEContentLoaded/ を参照してください。
原則として、IE が非 iframe にあるときは、doScroll を実行できるかどうかによって DOM が読み込まれているかどうかを継続的に判断することしかできません。上記の間隔で 50 ミリ秒ごとに doScroll を実行してみてください。ページが読み込まれていないときに doScroll を呼び出すと例外が発生するため、例外をキャッチするために try -catch が使用されます。
結論: 一般に、ページ DOM がロードされていない場合、 doScroll メソッドが呼び出されたときに例外が生成されます。次に、それを逆に使用します。例外がなければ、ページ DOM はロードされています。

これは、最初の読み込み準備完了を処理する問題です。ページが読み込まれた後に準備完了になったらどうなるでしょうか。

jQuery は、この状況ではバインディングをスキップする必要があります:

if ( document.readyState === "complete" ) { // スクリプトに準備完了を遅らせる機会を許可するために、非同期的に処理します setTimeout( jQuery.ready ) }

決定ページの読み込みが完了したかどうかは、readyState のステータスを確認することで直接確認できます。ここでは、主に正しい実行を保証するために、最小時間後に実行するタイマーが与えられます。

上記は、jQuery の read イベントとload イベントの内容です。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? 独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? Mar 18, 2025 pm 03:12 PM

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? Mar 18, 2025 pm 03:14 PM

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:16 PM

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:17 PM

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

See all articles