body - window.onload javascript



Versuchen, das Onload-Ereignis auf dem Skript-Tag auszulösen (1)

Ich versuche, eine Reihe von Skripten in der richtigen Reihenfolge zu laden, aber das Onload-Ereignis wird nicht für mich 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 document.body.appendChild(el) wird es wie erwartet ausgelöst.


Sie sollten das src Attribut nach dem onload Ereignis festlegen, zB:

el.onload = function() { //...
el.src = script;

Sie sollten das Skript auch vor dem Anhängen des onload Ereignisses an das DOM anhängen:

$body.append(el);
el.onload = function() { //...
el.src = script;

Denken Sie daran, dass Sie den readystate für die IE-Unterstützung überprüfen readystate . Wenn Sie jQuery verwenden, können Sie auch die Methode getScript() ausprobieren: http://api.jquery.com/jQuery.getScript/





onload