53 votes

En attente d'un script chargé dynamiquement

Dans mon corps de page, je dois insérer ce code à la suite d'un appel AJAX :

     <p>Loading jQuery</p>
    <script type='text/javascript' src='scripts/jquery/core/jquery-1.4.4.js'></script>
    <p>Using jQuery</p>
    <script type='text/javascript'>
        $.ajax({
            ...
        });
    </script>

Je ne peux pas utiliser $.load() car le document est déjà chargé, donc l'événement ne se déclenche pas.

Est-ce que c'est sûr ? Sinon, comment puis-je m'assurer que le script jquery a été chargé avant que mon code généré personnalisé ne soit exécuté.

68voto

Rob Fox Points 1386

Ajoutez un ID à votre fichier de script afin de pouvoir l'interroger.

 <script id="hljs" async src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.0.0/highlight.min.js"></script>

Ajoutez ensuite un écouteur de charge en JavaScript

 <script>
  var script = document.querySelector('#hljs');
  script.addEventListener('load', function() {
    hljs.initHighlightingOnLoad(); 
  });
</script>

14voto

Luke Robertson Points 179
const jsScript = document.createElement('script')
jsScript.src =
  'https://coolJavascript.js'

document.body.appendChild(jsScript)

jsScript.addEventListener('load', () => {
  doSomethingNow()
})

Se chargera après l'ajout dynamique du script

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X