Question

J'ai remarqué que certains scripts semblent être appelés avant d'autres sur une certaine page, je me demandais quel est l'ordre spécifique que les scripts se chargent? In-Page avant les scripts .js référencés? Sont-ils courus dans l'ordre depuis le premier <script> mentionné pour durer dans la page, ou ce navigateur est-il dépendant du navigateur? Comment peut-on s'assurer qu'un script spécifique est le premier à s'exécuter dans une page?

Était-ce utile?

La solution

J'ai remarqué que certains scripts semblent être appelés avant d'autres sur une certaine page. Je me demandais quel est l'ordre spécifique que les scripts se chargent?

Ceci est défini par W3C dans leurs spécifications linguistiques. Pour le Spécification HTML 4.01, par exemple, il est défini dans Section 18.2.4 Modification dynamique des documents, article 1.

In-Page avant les scripts .js référencés?

Voir au dessus. Non, les scripts en ligne et liés sont traités de manière identique.

Sont-ils exécutés dans l'ordre de la première fois mentionné en dernier, ou ce navigateur est-il dépendant du navigateur?

Les spécifications exigent qu'ils soient exécutés séquentiellement de haut en bas. Vous devrez trouver un navigateur qui implémente la langue en fonction de la spécification. Je ne peux penser à rien en ce moment qui gère les balises de script différemment, mais je suis sûr que c'est possible.

Une autre chose à considérer est la définition de «Run». Cela peut ressembler à l'analyse sémantique, mais ce n'est pas le cas. JavaScript, comme tout langage de programmation, est lui-même conçu pour se comporter selon les normes. JavaScript est spécifié dans le ECMA-262 5.1 Edition / juin 2011 Standard Évaluer de gauche à droite dans la section 7 Conventions lexicales. (Les fins de ligne sont traitées comme le caractère le plus à gauche de la ligne suivante.) Ce document fournit également des conventions pour l'ordre dans lequel les déclarations et autres opérations sont évaluées, telles que pendant que ou pour les déclarations.

Comment peut-on s'assurer qu'un script spécifique est le premier à s'exécuter dans une page?

(1) Mettez-le en haut, et (2) choisissez un navigateur qui implémente la spécification de la langue.

Cependant, je pense qu'il peut y avoir quelque chose de plus derrière cette question. Si vous essayez d'empêcher le code inattendu de l'exécution, vous devrez le bloquer jusqu'à ce que le gestionnaire d'événements Onload enregistre que la page est terminée. (Il vous suffit de clôturer vos opérations dans une fonction ou de les entourer d'un sf pour vérifier un drapeau booléen, c'est-à-dire que le téléchargement est défini par Onload.) Ensuite, lorsque le gestionnaire d'événements Onload se déclenche, vous pouvez lancer des opérations sur votre propre horaire sans Avoir à s'inquiéter de choses comme des objets DOM non inspectés.

Autres conseils

Tant qu'aucun script n'est chargé de manière dynamique ou marquée comme asynchrone ou report, les scripts sont exécutés ou évalués dans l'ordre rencontré dans la page. Ainsi, les premiers scripts rencontrés sont en premier.

Un fichier de script référencé en externe qui doit être chargé provoquera que toute exécution JavaScript supplémentaire attend que ce fichier référencé en externe soit chargé et analysé et s'exécute.

Ainsi, l'ordre d'évaluation du JavaScript normal (non-async, non-déférer) est déterminé à 100% comme l'ordre qu'il est rencontré dans la page.

Par défaut, script Les balises sont téléchargées et évaluées séquentiellement car elles sont rencontrées dans un document HTML.

Cependant, si vous utilisez le async ou defer Attributs, l'exécution se produit soit une fois le script terminé le téléchargement (asynchronisé) ou après le chargement de la page (différer).

Les scripts sont exécutés dans l'ordre, ils sont évalués dans le fichier HTML, tout comme vous le liriez en haut.

Cependant, Async et Refer peuvent remplacer cela pour les navigateurs qui ont des personnes implémentées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top