J'essaye de charger un ensemble de scripts dans l'ordre, mais l'événement onload ne se déclenche pas pour moi.
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);
Je suppose que les événements natifs comme el.onload ne se déclenchent pas lorsque jQuery est utilisé pour ajouter l'élément au DOM. Si j'utilise natif, document.body.appendChild(el)
il se déclenche comme prévu.
javascript
jquery
onload
chovy
la source
la source
Réponses:
Vous devez définir l'
src
attribut après l'onload
événement, par exemple:Vous devez également ajouter le script au DOM avant de joindre l'
onload
événement:N'oubliez pas que vous devez vérifier la
readystate
prise en charge d'IE. Si vous utilisez jQuery, vous pouvez également essayer lagetScript()
méthode: http://api.jquery.com/jQuery.getScript/la source
document.body.appendChild(el)
place de $ ('body'). Append (el); puis l'événement onload se déclenche comme prévu.src
in non pertinent.onload
etsrc
?