Skript-Onload-Ereignis wird nicht ausgelöst
Beim Versuch, eine Reihe von Skripten nacheinander zu laden, wird das Onload-Ereignis nicht ausgelöst. Eine Untersuchung des folgenden Codes offenbart das Problem:
<code class="javascript">var scripts = [ '//cdnjs.cloudflare.com/ajax/libs/less.js/1.3.3/less.min.js', '//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.min.js', MK.host+'/templates/templates.js' ]; function loadScripts(scripts){ var script = scripts.shift(); var el = document.createElement('script'); el.src = script; // Removed: el.src assignment here el.onload = function(script){ console.log(script + ' loaded!'); if (scripts.length) { loadScripts(scripts); } else { console.log('run app'); MK.init(); } }; $body.append(el); // Added: el appended before onload el.src = script; // Moved: el.src assignment here } loadScripts(scripts);</code>
Das Problem ist auf die falsche Platzierung des Onload-Ereignis-Listeners und die Zuweisung des src-Attributs zurückzuführen. Der korrekte Code lautet:
<code class="javascript"> el.onload = function(script){ console.log(script + ' loaded!'); if (scripts.length) { loadScripts(scripts); } else { console.log('run app'); MK.init(); } }; $body.append(el); el.src = script;</code>
Indem sichergestellt wird, dass das Skript an das DOM angehängt wird, bevor das Onload-Ereignis angehängt wird, und indem das src-Attribut nach dem Onload-Ereignis festgelegt wird, wird das erwartete Verhalten erreicht. Darüber hinaus ist es wichtig zu beachten, dass für die IE-Unterstützung der Bereitschaftsstatus überprüft werden sollte. Für jQuery-Benutzer bietet die Methode getScript() eine praktische Alternative zum Laden von Skripten.
Das obige ist der detaillierte Inhalt vonWarum wird mein Skript-Onload-Ereignis nicht ausgelöst, wenn mehrere Skripte nacheinander geladen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!