<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    鄧華

    BlogJava 聯(lián)系 聚合 管理
      48 Posts :: 0 Stories :: 149 Comments :: 0 Trackbacks
    在CMS的plugin計(jì)劃中, 需要控制的一項(xiàng)就是頁面的JS PLUGIN的動(dòng)態(tài)加載.
    一次加載幾十個(gè)plugin的JS是不現(xiàn)實(shí)的.只能在需要用到的時(shí)候再加載進(jìn)來.

    在一個(gè)頁面中, 如果我們要加載另外的JS文件進(jìn)來,有一個(gè)方法是

    document.write("<script src=''><\/script>");

    這樣會(huì)產(chǎn)生一個(gè)異步的JS加載, 可以產(chǎn)生一些有趣的應(yīng)用, 如AJAX效果,跨域調(diào)用.
    但上面產(chǎn)生的問題,是控制性, 無法控制JS的加載狀態(tài)及加載順序,而且只能在頁面初始化的時(shí)候調(diào)用.

    為了解決以上問題,需要設(shè)計(jì)一個(gè)JS的加載控制器及動(dòng)態(tài)加載JS的程序.

    下面的是一段JS的加載代碼:
    CMS.util.LoadScript=function( url ,control)
    {
        
    var oHead = top.document.getElementsByTagName('HEAD').item(0);
        
    var oScript= top.document.createElement("script");
        oScript.type 
    = "text/javascript";
        oScript.src
    =url;
        
       
    if(control){
            
    function loaded(c){
                
    if (Prototype.Browser.IE && this.readyState.toLowerCase() != "loaded" && this.readyState.toLowerCase() != "complete") { 
                    
    return
                }
                c.next();
            }
                Event.observe(oScript,
    "readystatechange",loaded.bind(oScript,control));
                Event.observe(oScript,
    "load",loaded.bind(oScript,control));
        }
        
         oHead.appendChild( oScript);
    }
    需要用到prototype.js庫.
    在這個(gè)方法里面是用的DOM的JS加載方法,利用了script的readystatechange參數(shù),這個(gè)參數(shù)IE下面的狀態(tài)參數(shù). 對(duì)應(yīng)FIREFOX是load參數(shù)
    //FIXME firefox的load里面的readyState不起作用,還未找到解決方法.


    參數(shù)URL表示要加載的JS, control代表一個(gè)控制器,用來控制script的加載是否完成.

    下面是控制器的代碼:
    CMS.util.ScriptLoadControl=function(_array){
                
    this.a=_array;
                
    this.i=0;
        }
    CMS.util.ScriptLoadControl.prototype
    ={
        next:
    function(){
            
    if(this.a.length>this.i){
                CMS.util.LoadScript(
    this.a[this.i++],this);
            }
    else{
                
    return false;
            }
        }
    }
    其中_array參數(shù)是一個(gè)保存了url地址的數(shù)組.

    在使用的時(shí)候,用以下代碼:
    var c=new CMS.util.ScriptLoadControl(plugin_url_array);
            c.next();

    就可以順序的加載JS,以及保證JS的完全加載成功.



    posted on 2007-11-28 22:40 鄧華的碎碎念 閱讀(3272) 評(píng)論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久国产乱子伦免费精品| 亚洲码国产精品高潮在线| 日韩中文字幕免费视频| 看亚洲a级一级毛片| 亚洲人成人77777网站不卡| 亚洲欧洲中文日韩久久AV乱码| 91在线品视觉盛宴免费| 久久免费动漫品精老司机| 日本中文字幕免费看| 亚洲色少妇熟女11p| 亚洲欧洲国产经精品香蕉网| 亚洲开心婷婷中文字幕| 免费在线黄色网址| 日韩中文无码有码免费视频| 国产桃色在线成免费视频| 91在线手机精品免费观看| 暖暖免费在线中文日本| 两个人日本免费完整版在线观看1| 美女尿口扒开图片免费 | 九九久久精品国产免费看小说| 亚洲一区在线视频观看| 久久精品国产亚洲av日韩| 亚洲成A∨人片在线观看不卡| 亚洲天堂中文字幕在线| 亚洲国产专区一区| 亚洲七七久久精品中文国产| 免费播放特黄特色毛片| 亚洲AⅤ无码一区二区三区在线| 国产免费人人看大香伊| 免费成人在线观看| 又黄又爽的视频免费看| 全亚洲最新黄色特级网站| 亚洲国产高清精品线久久| 亚洲精品久久久www| 亚洲欭美日韩颜射在线二| 亚洲精品无码永久在线观看你懂的| 亚洲视频一区二区| 日韩亚洲变态另类中文| 亚洲AV无码专区亚洲AV伊甸园 | 一区二区三区在线观看免费| 成av免费大片黄在线观看|