Est-il toujours vrai que l'événement DOMContentLoaded est déclenché avant l'événement window.onload, car la plupart des pages Web contiennent des images et des feuilles de style ou cela peut-il se produire dans l'autre sens ? J'ai besoin de savoir si window.onload se produit toujours après l'événement DOMContentLoaded et que se passe-t-il si la page Web n'a pas de feuilles de style, d'images et de sous-cadres ?

Une fenêtre est dite chargée uniquement si DOM a fini de se charger.

Cette affirmation est-elle vraie?

-3
Gautham Pughazhendhi 16 mars 2019 à 11:00

1 réponse

Le standard de vie HTML publié par WHATWG, spécifie l'ordre des actions qui se produisent lorsque le DOM a été analysé. Il a 12 étapes. Les étapes 4 et 7 traitent des événements sur lesquels vous posez des questions :

4) Mettre une tâche en file d'attente pour exécuter les sous-étapes suivantes :

  1. Lancer un événement nommé DOMContentLoaded sur l'objet Document, avec son attribut bubbles initialisé à true.

  2. Activez la file d'attente de messages client de l'objet ServiceWorkerContainer dont le client de service worker associé est l'objet de paramètres pertinent de l'objet Document.

5) Faites tourner la boucle d'événement jusqu'à ce que l'ensemble des scripts qui s'exécuteront dès que possible et la liste des scripts qui s'exécuteront dans l'ordre dès que possible soient vides.

6) Faites tourner la boucle d'événement jusqu'à ce qu'il n'y ait plus rien qui retarde l'événement de chargement dans le document.

7) Mettez une tâche en file d'attente pour exécuter les sous-étapes suivantes :

  1. Définir la préparation du document actuel sur "Terminé".

  2. Événement de chargement : si le contexte de navigation de l'objet Document n'est pas NULL, déclenchez un événement nommé load sur l'objet global pertinent de l'objet Document, avec l'ancien indicateur de remplacement de cible défini.

Étant donné que les tâches en file d'attente sont garanties de s'exécuter dans l'ordre dans lequel elles ont été mises en file d'attente, l'ordre de ces deux événements est garanti.

En fait, l'événement DOMContentedLoaded aura déjà été traité par les étapes 5 et 6 ("spin the event loop") avant que load ne soit ajouté à la file d'attente.

2
trincot 16 mars 2019 à 09:08