Home Web Front-end JS Tutorial ready and load events in jQuery

ready and load events in jQuery

Dec 16, 2016 am 10:49 AM

ready and load events in jQuery (from MOOC.com)

jQuery has 3 methods for loading documents

$(document).ready(function() { // ...code... }) // document ready abbreviation $(function() { // ...code... }) $(document).load(function() { // ...code... })

One is ready and the other is load, what is the difference between the two?

Which one executes first, ready or load:
During the interview process, we are often asked a question: Which one, ready or load, is executed first, and which one is executed last? The answer is that ready is executed first and load is executed later.

DOM document loading steps:
To understand why ready is executed first and load is executed later, you must first understand the steps of DOM document loading:

(1) Parse the HTML structure. (2) Load external scripts and style sheet files. (3) Parse and execute script code. (4) Construct HTML DOM model. //ready (5) Load external files such as images. (6) The page is loaded. //load

You should have understood from the above description that ready will be executed after step (4) is completed, but load will not be executed until step (6) is completed.

Conclusion:

The difference between ready and load lies in the loading of resource files. ready builds the basic DOM structure, so the faster the code should be loaded, the better. In an age of high-speed browsing, no one wants to wait for answers. If a website page loads for more than 4 seconds, sorry, 1/4 of your users will face loss, so user experience is crucial for the framework. The sooner we should process the DOM, the better. We don’t need to wait for the image. Process the loading of the frame only after all resources are loaded. If there are too many image resources, the load event will not be triggered for a long time.

Let’s take a look at how jQuery handles the issue of document loading timing:

jQuery.ready.PRomise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready         setTimeout( jQuery.ready );         } else {               document.addEventListener( "DOMContentLoaded",, false );           window.addEventListener  ("load", completed , false);
The specific strategy for jQuery compatibility can be seen: for advanced browsers, we are currently happy to use the DOMContentLoaded event, saving time and effort.

So what to do with the old IE?

Continue to look at the jQuery solution:

// 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/ / detach(); // and execute any waiting functions jQuery.ready(); } })(); }

If the browser has a document.onreadystatechange event, when the event is triggered, if document.readyState=complete, the DOM tree can be considered to have been loaded. However, this event is not very reliable. For example, when there are images in the page, it may be triggered after the onload event. In other words, it can only be executed correctly when the page contains no binary resources or very few or is cached as a backup. Take your pick.

Loading detection for IE

Diego Perini in 2007 reported a way to detect whether IE is loaded, using the doScroll method call. For details, see http://Javascript.nwbox.com/IEContentLoaded/.
The principle is that when IE is in a non-iframe, it can only continuously judge whether the DOM is loaded by whether it can execute doScroll. Try to execute doScroll every 50 milliseconds in the above interval. Note that calling doScroll will cause an exception when the page is not loaded, so try -catch is used to catch the exception.
Conclusion: So in general, when the page DOM is not loaded, an exception will be generated when the doScroll method is called. Then we use it in reverse. If there is no exception, then the page DOM has been loaded.

This is a problem where we deal with ready loading in the first time. What if ready is after the page is loaded?

jQuery must skip binding for this situation:

if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready setTimeout( jQuery.ready ); }

Determine whether the loading of the page is completed directly by checking the status of readyState. Here, a timer will be given for execution after a minimum time, mainly to ensure correct execution.

The above is the content of ready and load events in jQuery. For more related articles, please pay attention to the PHP Chinese website (www.php.cn)!


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How do I create and publish my own JavaScript libraries? How do I create and publish my own JavaScript libraries? Mar 18, 2025 pm 03:12 PM

Article discusses creating, publishing, and maintaining JavaScript libraries, focusing on planning, development, testing, documentation, and promotion strategies.

How do I optimize JavaScript code for performance in the browser? How do I optimize JavaScript code for performance in the browser? Mar 18, 2025 pm 03:14 PM

The article discusses strategies for optimizing JavaScript performance in browsers, focusing on reducing execution time and minimizing impact on page load speed.

What should I do if I encounter garbled code printing for front-end thermal paper receipts? What should I do if I encounter garbled code printing for front-end thermal paper receipts? Apr 04, 2025 pm 02:42 PM

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

How do I debug JavaScript code effectively using browser developer tools? How do I debug JavaScript code effectively using browser developer tools? Mar 18, 2025 pm 03:16 PM

The article discusses effective JavaScript debugging using browser developer tools, focusing on setting breakpoints, using the console, and analyzing performance.

Who gets paid more Python or JavaScript? Who gets paid more Python or JavaScript? Apr 04, 2025 am 12:09 AM

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

How do I use source maps to debug minified JavaScript code? How do I use source maps to debug minified JavaScript code? Mar 18, 2025 pm 03:17 PM

The article explains how to use source maps to debug minified JavaScript by mapping it back to the original code. It discusses enabling source maps, setting breakpoints, and using tools like Chrome DevTools and Webpack.

How to merge array elements with the same ID into one object using JavaScript? How to merge array elements with the same ID into one object using JavaScript? Apr 04, 2025 pm 05:09 PM

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

The difference in console.log output result: Why are the two calls different? The difference in console.log output result: Why are the two calls different? Apr 04, 2025 pm 05:12 PM

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...

See all articles