DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> Javascript:LoadModule,LoadModules
Javascript:LoadModule,LoadModules
編輯:AJAX詳解     

注意這裡使用Function來避免eval的可見域問題。


function loadModule(/*Module*/mod/*location*/, /*Function*/cb/*callback*/) {
    var AJax = new XMLHttpRequest();
    AJax.onreadystatechange = function(cb){
        return function(){
            if (this.readyState == 4 && this.status == 200) {
                (new Function(this.responseText)).apply(window);
                cb();
                mod.loaded = true;
            }
        }
    } (cb);
    AJax.open('POST', mod.location, true);
    AJax.send(null);
}

function loadModules (/*Array<Module>*/mods/*locations*/, /*Function*/cb/*callback*/) {
    if (mods && mods.length <= 0) {
        cb();
        return;
    }
    var mod = mods.shift();
    loadModule(mod, mods.length <= 0 ? cb : function() {
        loadModules(mods, cb);
    });
}

function LoadModules(/*Array<Module>*/mods, /*Function*/cb/*callback*/) {
    var toLoad = [];
    function ToLoad(mod) {
        if (mod.loaded) return;
        if (mod.reference instanceof Array) {
            for (var i = 0; i < mod.reference.length; i ++) {
                if (!(mod.reference[i].loading || mod.loaded)) {
                    ToLoad(mod.reference[i]);
                }
            }
        }
        toLoad.push(mod);
        mod.loading = true;
    }
    for (var i = 0; i < mods.length; i++) {
        ToLoad(mods[i]);
    }
    loadModules(toLoad, cb);
}
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved