Maison  >  Article  >  interface Web  >  Pouvez-vous charger JavaScript de manière synchrone avec document.createElement(\"script\") ?

Pouvez-vous charger JavaScript de manière synchrone avec document.createElement(\"script\") ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 13:07:03937parcourir

Can You Load JavaScript Synchronously with document.createElement(

Chargement synchrone de JavaScript avec document.createElement("script")

En développement web, il est souvent nécessaire de charger des fichiers JavaScript externes de manière asynchrone pour éviter de bloquer le rendu de la page. Cependant, il peut y avoir des situations où vous souhaitez charger un script de manière synchrone et l'utiliser immédiatement après.

La question en question explore la possibilité de charger de manière synchrone un fichier JavaScript (my.js) et d'utiliser immédiatement les fonctions définies dans. L'extrait de code fourni tente d'y parvenir en créant dynamiquement un élément de script à l'aide de document.createElement("script") et en l'ajoutant à l'élément head.

Malheureusement, comme le souligne correctement la réponse, ce n'est pas possible. pour charger JavaScript de manière synchrone de cette manière. Lorsqu'un script est chargé dynamiquement, le navigateur l'exécute de manière asynchrone. Cela signifie que même si le script sera éventuellement chargé, il n'y a aucune garantie quand cela se produira. Par conséquent, tenter d'appeler des fonctions à partir du script chargé immédiatement après sa création peut échouer.

La réponse suggère d'utiliser le gestionnaire d'événements onload sur l'élément de script pour exécuter du code une fois le chargement du script terminé. Bien que cela puisse fonctionner dans certains cas, il n’est pas entièrement fiable et ne se déclenche pas toujours. Surtout si le script chargé injecte un autre script contenant la fonction souhaitée.

Pour améliorer la fiabilité du chargement de script synchrone, vous pouvez envisager d'utiliser une approche différente. La réponse mentionne deux options :

  1. XHR et Eval : Récupérez le script à l'aide d'un XMLHttpRequest (XHR), puis évaluez dynamiquement (eval()) son contenu. Cela garantit que le script est exécuté immédiatement, offrant un comportement de type synchrone. Cependant, il est important de noter qu'évaluer le code de cette manière peut avoir des implications en matière de sécurité et doit être utilisé avec prudence.
  2. Outil de chargement de script personnalisé : utilisez un outil de chargement de script robuste comme RequireJS ou YepNope. . Ces outils offrent un moyen plus contrôlé et fiable de charger et de gérer les dépendances JavaScript. Ils gèrent des scénarios complexes et tiennent compte des cas extrêmes, ce qui facilite l'utilisation de scripts externes de manière synchrone ou asynchrone.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn