Ich versuche, eine Reihe von Skripten der Reihe nach zu laden, aber das Onload-Ereignis wird für mich nicht ausgelöst.
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;
el.onload = function(script){
console.log(script + ' loaded!');
if (scripts.length) {
loadScripts(scripts);
}
else {
console.log('run app');
MK.init();
}
};
$body.append(el);
}
loadScripts(scripts);
Ich denke, native Ereignisse wie el.onload werden nicht ausgelöst, wenn jQuery verwendet wird, um das Element an das DOM anzuhängen. Wenn ich native verwende, document.body.appendChild(el)
wird es wie erwartet ausgelöst.
javascript
jquery
onload
chovy
quelle
quelle
Antworten:
Sie sollten das
src
Attribut nach demonload
Ereignis festlegen, z.Sie sollten das Skript auch an das DOM anhängen, bevor Sie das
onload
Ereignis anhängen :Denken Sie daran, dass Sie nach
readystate
IE-Unterstützung suchen müssen. Wenn Sie jQuery verwenden, können Sie auch die folgendegetScript()
Methode ausprobieren : http://api.jquery.com/jQuery.getScript/quelle
document.body.appendChild(el)
anstelle von $ ('body') verwende. Append (el); dann wird das Onload-Ereignis wie erwartet ausgelöst.src
irrelevant machen.onload
undsrc
festlegen?