jqueryのevent_jqueryのready()メソッドの使い方を詳しく解説
ページの初期化では、$(document).ready(function(){//code}) または $(window).load(function(){//code});
それらの違いは、ready は DOM 構造が読み込まれた後にトリガーされ、load はページ内の DOM 構造、CSS、JS、画像などが読み込まれた後にトリガーされることです。明らかに、ready はページの初期化に適しています。 。しかし、常にそうとは限らない場合もあります。内部メカニズムをさらに詳しく調べる必要があります。
では、ready は DOM 構造がロードされたことを内部的にどのように判断するのでしょうか?そして、異なるブラウザはそれをどのように判断するのでしょうか?
jquery のバージョンが jquery-1.11.3.js であると仮定すると、答えは jquery コード内にあります。
ready のキー コード (行 3507 ~ 3566)。キー コードは赤でマークされています:
jQuery.ready.promise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); // Catch cases where $(document).ready() is called after the browser event has already occurred. // we once tried to use readyState "interactive" here, but it caused issues like the one // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready setTimeout( jQuery.ready ); // Standards-based browsers support DOMContentLoaded } else if ( document.addEventListener ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed, false ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed, false ); // If IE event model is used } else { // Ensure firing before onload, maybe late but safe also for iframes document.attachEvent( "onreadystatechange", completed ); // A fallback to window.onload, that will always work window.attachEvent( "onload", completed ); // If IE and not a frame // continually check to see if the document is ready var top = false; try { top = window.frameElement == null && document.documentElement; } catch(e) {} if ( top && top.doScroll ) { (function doScrollCheck() { if ( !jQuery.isReady ) { try { // Use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ top.doScroll("left"); } catch(e) { return setTimeout( doScrollCheck, 50 ); } // detach all dom ready events detach(); // and execute any waiting functions jQuery.ready(); } })(); } } } return readyList.promise( obj ); };
上記のコードは、ready がトリガーされると 2 つの部分に分割できます
1. 標準ブラウザでトリガーします
ブラウザが標準ブラウザに基づいている場合、DOM 構造のロード後に「DOMContentLoaded」イベントがトリガーされ、jquery は内部でこのイベントを準備完了のトリガー ソースとして使用します。
document.addEventListener( "DOMContentLoaded", completed, false );
2. IE ブラウザーでのトリガー
ブラウザが IE の場合、IE (これはとても面倒で強力です) は「DOMContentLoaded」イベントをサポートしていないため、別の方法を見つける必要があります。
(function doScrollCheck() { if ( !jQuery.isReady ) { try { // Use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ top.doScroll("left"); } catch(e) { return setTimeout( doScrollCheck, 50 ); } // detach all dom ready events detach(); // and execute any waiting functions jQuery.ready(); } })();
IEでの方法は、上記コードの赤字部分の「document.documentElement.doScroll("left")」メソッドを使用してページをスクロールします。ロードされていない場合は、50ミリ秒待ってスクロールを続けます。スクロールするまで押し続けて、トリガーの準備が完了します。
ただし、ページ内にフレームがある場合は、readyのトリガーソースとしてwindow.onloadイベントが使用されます。
IE では、ページ内にフレームがある場合、ページ内のすべてのコンテンツが読み込まれるまで、ready はトリガーされません。
jQuery のready イベントとload イベントの違い
仕事で jQuery を使用する場合は、使用する前にこれを行う必要があります:
//document ready $(document).ready(function(){ ...code... }) //document ready 简写 $(function(){ ...code... })
次のように書かれることもあります:
//document load $(document).load(function(){ ...code... })
一方は準備完了、もう一方はロードです。この 2 つの違いは何ですか?今日は話しましょう。
レディとロードのどちらが先に実行されるか:
面接プロセス中に、誰もがよく質問されます:ready とload のどちらが先に実行され、どちらが後に実行されますか?答えは、ready が最初に実行され、load が後で実行されるということです。
DOM ドキュメントをロードする手順:
ready が最初に実行され、load が後で実行される理由を理解するには、まず DOM ドキュメントをロードする手順について説明する必要があります。
(1) 解析HTML结构。 (2) 加载外部脚本和样式表文件。 (3) 解析并执行脚本代码。 (4) 构造HTML DOM模型。//ready (5) 加载图片等外部文件。 (6) 页面加载完毕。//load
上記の説明から、ステップ(4)が完了した後にreadyが実行されることが理解できたはずです。ただし、手順(6)が完了するまでロードは実行されません。
準備完了イベント:
ready イベントは、DOM 構造が描画された後に実行されます。これにより、多数のメディア ファイルが読み込まれていない場合でも、JS コードを実行できることが保証されます。
ロードイベント:
load イベントは、Web ページ内のすべてのコンテンツが読み込まれるまで待ってから実行する必要があります。 Web ページに多数の画像がある場合、Web ページのドキュメントはレンダリングされましたが、Web ページのデータが完全にはロードされていないため、load イベントをすぐにトリガーできないという状況が発生します。
概要:
皆さんはすでにreadyとloadの違いを理解していると思いますが、実際、ページ内に写真などのメディアファイルが存在しない場合、readyとloadはほぼ同じですが、ページ内にファイルがある場合は異なります。 , そのため、引き続きすべての人に取り組むことをお勧めします Ready は中国語で使用されます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

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

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

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

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...
