Assurez-vous d'un script Javascript est le premier à s'exécuter?
J'ai remarqué que certains scripts semblent être appelée avant les autres sur une certaine page, je me demandais, qu'est-ce que la commande spécifique pour les scripts à charger? En page avant référencés .scripts js? Sont-elles exécutées dans l'ordre à partir de la première <script>
mentionné à la dernière page, ou Est-ce navigateur-dépendants? Comment faire en sorte qu'un script spécifique est le premier à s'exécuter dans une page?
OriginalL'auteur NoBugs | 2012-02-21
Vous devez vous connecter pour publier un commentaire.
Il est défini par le W3C dans leur langue spécifications. Pour le La Spécification HTML 4.01, par exemple, il est défini dans Section 18.2.4 une modification Dynamique de documents, l'article 1.
Voir ci-dessus. Non, en ligne et lié scripts sont traitées de manière identique.
Le cahier des charges appel à eux pour être exécutées de manière séquentielle à partir du haut vers le bas. Vous aurez à trouver un navigateur qui implémente le langage selon la spécification. Je ne peux pas penser à tout maintenant poignée de balises de SCRIPT différemment, mais je suis sûr que c'est possible.
Une autre chose à considérer est la définition de "exécuter". Cela peut ressembler à de la sémantique de l'analyse, mais il ne l'est pas. JavaScript, comme tout langage de programmation, est lui-même conçu pour se comporter selon les normes. JavaScript est spécifié dans la ECMA-262 5.1 Edition /juin 2011 standard à évaluer à partir de la gauche-à-droite dans la Section 7 Lexicale Conventions. (Les fins de ligne sont considérés comme plus à gauche caractère de la ligne suivante.) Ce document fournit également des conventions pour l'ordre dans lequel les instructions et d'autres opérations sont évaluées, comme TOUT ou POUR états.
(1) le Mettre en haut, et (2) choisissez un navigateur qui implémente la spécification du langage.
Cependant, je pense qu'il y a peut être quelque chose de plus derrière cette question. Si vous essayez d'arrêter de code inattendu de l'exécution, vous aurez à le bloquer jusqu'à ce que le gestionnaire d'événement ONLOAD registres que la page est complète. (Mettez simplement vos opérations dans une fonction ou surround avec un if pour vérifier un indicateur booléen, c'est à dire isLoaded être défini à true par ONLOAD.) Puis, lorsque le gestionnaire d'événement ONLOAD déclenche, vous pouvez lancer des opérations sur l'horaire de votre choix sans avoir à vous soucier de choses comme uninstantiated les objets DOM.
OriginalL'auteur ingyhere
Tant que pas de scripts sont chargés dynamiquement ou marqué comme async ou de différer, les scripts sont exécutés et évalués dans l'ordre rencontrées dans la page. Donc, la première des scripts rencontré exécuter en premier.
Un référencés fichier de script doit être chargé et tous les autres d'exécution de javascript, attendre jusqu'à ce que référencés fichier est chargé et analysé et s'exécute.
Donc, l'ordre d'évaluation de la normale (non-async, non-reporter) javascript est 100% déterminé que l'ordre qu'il est rencontré dans la page.
Je ne sais pas où il est fait référence, non pas je n'ai le temps de regarder à droite maintenant. C'est le MOYEN le javascript fonctionne - si vous avez quelque raison de défi, veuillez indiquer que la raison. Javascript s'exécute à partir d'en haut/en bas. Il doit absolument être compatible sur tous les navigateurs ou il y a beaucoup de pages de casser parce que les gens comptent sur javascript qui s'exécute à partir du haut vers le bas tout le temps. Assez beaucoup n'importe quelle langue a à offrir en garantie de l'exécution de l'ordre entre les différentes parties de code parce que c'est souvent nécessaire pour faire de votre logique de travail.
Voici une référence: docstore.mik.ua/orelly/webprog/jscript/ch12_03.htm
Le seul endroit où je suis conscient des différences de comportement du navigateur à partir d'un navigateur à l'autre est lorsque les scripts sont insérés de manière dynamique via javascript, cette réponse exclut expressément et je ne crois pas que la question se pose au sujet de.
Une chose que je suis en désaccord avec la réponse est la formulation "ordre d'exécution" que je préfère "ordre d'évaluation" depuis quelques code spécifie les fonctions ou d'autres entités qui sont appelés à une date ultérieure. L'ordre de chargement est spécifié (au moins) dans W3Cs la Spécification HTML 4.01, Section 18.2.4 une modification Dynamique de documents. L'ordre d'exécution de JavaScript lexique est spécifié dans l'ECMA-262 5.1 Edition / juin 2011.
OriginalL'auteur jfriend00
Par défaut,
script
balises sont téléchargés et évalués de manière séquentielle comme elles sont rencontrées dans un document HTML.Toutefois, si vous utilisez le
async
oudefer
attributs, l'exécution se fait soit après la fin du script de téléchargement (asynchrone) ou une fois que la page est terminé le chargement (reporter).OriginalL'auteur fullsailor
Scripts sont exécutés dans l'ordre où ils sont évalués dans le fichier html, tout comme vous pouvez le lire à partir du haut vers le bas.
Cependant, async et de reporter pouvez remplacer cette valeur pour les navigateurs qui ont celles mises en œuvre.
OriginalL'auteur Aron Cederholm