Getting notified when the page DOM has loaded (but before window.onload)

Question :

Getting notified when the page DOM has loaded (but before window.onload),

Answer :

I know there are some ways to get notified when the page body has loaded (before all the images and 3rd party resources load which fires the window.onload event), but it’s different for every browser.

Is there a definitive way to do this on all the browsers?

So far I know of:

  • DOMContentLoaded : On Mozilla, Opera 9 and newest WebKits. This involves adding a listener to the event:

    document.addEventListener( “DOMContentLoaded”, [init function], false );

  • Deferred script: On IE, you can emit a SCRIPT tag with a @defer attribute, which will reliably only load after the closing of the BODY tag.
  • Polling: On other browsers, you can keep polling, but is there even a standard thing to poll for, or do you need to do different things on each browser?

I’d like to be able to go without using document.write or external files.

This can be done simply via jQuery:

$(document).ready(function() { ... })  

but, I’m writing a JS library and can’t count on jQuery always being there.


There’s no cross-browser method for checking when the DOM is ready — this is why libraries like jQuery exist, to abstract away nasty little bits of incompatibility.

Mozilla, Opera, and modern WebKit support the DOMContentLoaded event. IE and Safari need weird hacks like scrolling the window or checking stylesheets. The gory details are contained in jQuery’s bindReady() function.

That’s the answer Getting notified when the page DOM has loaded (but before window.onload), Hope this helps those looking for an answer. Then we suggest to do a search for the next question and find the answer only on our site.

Disclaimer :

The answers provided above are only to be used to guide the learning process. The questions above are open-ended questions, meaning that many answers are not fixed as above. I hope this article can be useful, Thank you

Read More  What is a Covered Index?