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