“document.ready” without jQuery

Home /

Table of Contents

Introduction to document.ready

$(document).ready() is a JavaScript event that is used to ensure that code is executed only after the DOM (Document Object Model) of a web page is fully loaded. The DOM is a tree-like structure that represents the HTML (HyperText Markup Language) elements of a web page, and $(document).ready() helps to ensure that the JavaScript code is executed only after this structure has been fully constructed.

When JavaScript code is executed before the DOM is fully loaded, it can result in errors and unexpected behavior. For example, if a JavaScript function tries to manipulate a DOM element that hasn’t been created yet, it will cause an error. Similarly, if JavaScript code tries to access an element’s properties before the element has been fully loaded, it can lead to unexpected behavior.

To avoid these issues, $(document).ready() is used to ensure that the JavaScript code is executed only after the DOM is fully loaded. In jQuery, $(document).ready() is the most commonly used method to achieve this. However, vanilla JavaScript also provides alternative methods to ensure that the DOM is fully loaded before executing JavaScript code, such as the DOMContentLoaded event.

Using $(document).ready() or the DOMContentLoaded event can also help to improve the performance of a web page, as it ensures that JavaScript code is executed only when it’s necessary, rather than being executed as soon as it’s encountered.

Overall, $(document).ready() is an important concept in web development, and understanding how to use it effectively is essential for writing robust and performant JavaScript code.

DOMContentLoaded event

DOMContentLoaded is a JavaScript event that is fired when the initial HTML document has been completely loaded and parsed, without waiting for images, stylesheets, and subframes to finish loading. In other words, it is triggered when the DOM is ready to be manipulated by JavaScript.

The DOMContentLoaded event is similar to the ‘load ‘event, but there are some important differences. The load event is fired when the entire page (including all images, stylesheets, and subframes) has finished loading. This means that it may take longer for the ‘load ‘event to be triggered than the DOMContentLoaded event. Additionally, the ‘load ‘event is not guaranteed to fire if there are any errors during the loading process, whereas the DOMContentLoaded event will always fire once the HTML document has been completely loaded and parsed.

Here is an example of how to use the DOMContentLoaded event in JavaScript:

JavaScript
document.addEventListener("DOMContentLoaded", function(event) {
  console.log("DOM fully loaded and parsed");
});

In this example, we are using the addEventListener method to attach a function to the DOMContentLoaded event. The function simply logs a message to the console to indicate that the DOM has been fully loaded and parsed.

Using the DOMContentLoaded event is a common way to ensure that JavaScript code is executed only after the DOM has been fully loaded and is ready to be manipulated. It can help to prevent errors and improve the performance of a web page by ensuring that JavaScript code is executed only when it’s necessary.

Vanilla JavaScript methods

Vanilla JavaScript provides a number of methods that can be used to replace the jQuery $(document).ready() method and ensure that JavaScript code is executed only after the DOM has been fully loaded. Here are some common vanilla JavaScript methods:

  1. DOMContentLoaded event: As mentioned earlier, the DOMContentLoaded event is fired when the initial HTML document has been completely loaded and parsed, without waiting for images, stylesheets, and subframes to finish loading. It can be used to ensure that JavaScript code is executed only after the DOM is ready to be manipulated.

Example:

JavaScript
document.addEventListener("DOMContentLoaded", function(event) {
  console.log("DOM fully loaded and parsed");
});
  1. window.onload event: This event is fired when the entire page (including all images, stylesheets, and subframes) has finished loading. It can be used to ensure that JavaScript code is executed only after all content on the page has been loaded.

Example:

JavaScript
window.onload = function() {
  console.log("Page fully loaded");
};
  1. defer attribute: This attribute can be added to a script tag to indicate that the script should be executed only after the DOM has been fully loaded. It is similar to the async attribute, but unlike async, scripts with the defer attribute will be executed in the order in which they appear in the HTML document.

Example:

JavaScript
<script defer src="script.js"></script>
  1. requestAnimationFrame: This method can be used to ensure that JavaScript code is executed only when the browser is ready to render the next frame. It can help to improve the performance of animations and other visual effects by ensuring that they are synchronized with the browser’s rendering cycle.

Example:

JavaScript
function animate() {
  // animation code here
  requestAnimationFrame(animate);
}

document.addEventListener("DOMContentLoaded", function(event) {
  animate();
});

These are just a few examples of vanilla JavaScript methods that can be used to replace the jQuery $(document).ready() method and ensure that JavaScript code is executed only after the DOM has been fully loaded. Depending on your specific use case, you may need to use one or more of these methods to ensure that your code is executed at the appropriate time.

Best practices for using document.ready without jQuery

Here are some best practices for using the DOMContentLoaded event in vanilla JavaScript:

1.Use document.addEventListener: Use the document.addEventListener method to attach the DOMContentLoaded event listener to the document object.

JavaScript
document.addEventListener("DOMContentLoaded", function() {
  // Code to be executed after the DOM is loaded
});

2. Place scripts at the bottom of the page: Place your JavaScript code at the bottom of the HTML page, just before the closing </body> tag. This allows the browser to load the HTML and CSS first, which can improve the perceived performance of your site.

JavaScript