Heim >Web-Frontend >js-Tutorial >Warum wird das Ereignis „onload' nicht ausgelöst, wenn ein Skriptelement mit jQuery angehängt wird?

Warum wird das Ereignis „onload' nicht ausgelöst, wenn ein Skriptelement mit jQuery angehängt wird?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 02:45:02344Durchsuche

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

OnLoad-Ereignisproblem mit Skript-Tag

Beim Versuch, Skripte in einer Sequenz zu laden, tritt ein Problem auf, bei dem das Onload-Ereignis nicht ausgelöst wird . Der folgende Codeausschnitt veranschaulicht das Problem:

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);
}

Das Onload-Ereignis wird nicht ausgelöst, wenn das Skriptelement mithilfe von jQuery ($body.append(el)) an das DOM angehängt wird. Die Verwendung von nativem JavaScript document.body.appendChild(el) löst das Ereignis jedoch wie beabsichtigt aus.

Lösung:

Um dieses Problem zu beheben, ändern Sie den Code wie folgt:

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;
}

Durch Anhängen des Skripts an das DOM vor dem Festlegen des src-Attributs wird das Onload-Ereignis wie erwartet ausgelöst. Erwägen Sie außerdem die Verwendung der getScript()-Methode von jQuery für browserübergreifende Kompatibilität.

Das obige ist der detaillierte Inhalt vonWarum wird das Ereignis „onload' nicht ausgelöst, wenn ein Skriptelement mit jQuery angehängt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn