Search code examples
javascriptasynchronousdom-events

How to know if window "load" event was fired already


I'm writing a Javascript script. This script will probably be loaded asynchronously (AMD format).

In this script, I'd like to do nothing important until the window.load event was fired. So I listen to the window "load" event.

But if the script is loaded after window.load event... how can I know window.load was already fired?

And of course I don't want to add something in any other scripts (they are all loaded async, the problem is the same) :)

Edit :

Imagine an HTML doc with no Javascript in it at all.

Than someone insert in this doc a tag, and this script tag loads my Javascript file.

This will execute my script.

How this script can know if window.load was already fired ?

No jQuery, not any script in the HTML doc before mine.

Is it possible to know ??

I found the window.document.readystate property. This property is for document "ready" event I guess, not for window "load". Is there anything similar for window "load" event ?


Solution

  • Browser navigation performance loadEventEnd metric can be used to determinate if load event was triggered:

    let navData = window.performance.getEntriesByType("navigation");
    if (navData.length > 0 && navData[0].loadEventEnd > 0)
    {
        console.log('Document is loaded');
    } else {
        console.log('Document is not loaded');
    }