Maison > interface Web > js tutoriel > le corps du texte

Pourquoi l'événement « onload » ne se déclenche-t-il pas lors de l'ajout d'un élément de script à l'aide de jQuery ?

Barbara Streisand
Libérer: 2024-11-04 02:45:02
original
313 Les gens l'ont consulté

Why Doesn't the `onload` Event Fire When Appending a Script Element Using jQuery?

Problème d'événement OnLoad avec la balise de script

Lors d'une tentative de chargement de scripts dans une séquence, un problème survient lorsque l'événement onload ne parvient pas à se déclencher . L'extrait de code suivant illustre le problème :

function loadScripts(scripts){
    var script = scripts.shift();
    var el = document.createElement('script');
    el.src = script;
    el.onload = function(script){
        console.log(script + ' loaded!');
        if (scripts.length) {
            loadScripts(scripts);
        }
        else {
            console.log('run app');
            MK.init();
        }
    };
    $body.append(el);
}
Copier après la connexion

L'événement onload ne se déclenche pas lorsque l'élément de script est ajouté au DOM à l'aide de jQuery ($body.append(el)). Cependant, l'utilisation du JavaScript natif document.body.appendChild(el) déclenche l'événement comme prévu.

Solution :

Pour résoudre ce problème, modifiez le code comme suit :

function loadScripts(scripts){
    var script = scripts.shift();
    var el = document.createElement('script');
    $body.append(el);
    el.onload = function(script){
        console.log(script + ' loaded!');
        if (scripts.length) {
            loadScripts(scripts);
        }
        else {
            console.log('run app');
            MK.init();
        }
    };
    el.src = script;
}
Copier après la connexion

En attachant le script au DOM avant de définir l'attribut src, l'événement onload se déclenchera comme prévu. De plus, pensez à utiliser la méthode getScript() de jQuery pour la compatibilité entre navigateurs.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal