<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的動態(tài)加載.
    一次加載幾十個(gè)plugin的JS是不現(xiàn)實(shí)的.只能在需要用到的時(shí)候再加載進(jìn)來.

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

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

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

    為了解決以上問題,需要設(shè)計(jì)一個(gè)JS的加載控制器及動態(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ù). 對應(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) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产成人精品免费午夜app| 久草福利资源网站免费| 成年女人毛片免费观看97| 亚洲国产视频一区| 精品久久8x国产免费观看| 亚洲中字慕日产2020| 很黄很色很刺激的视频免费| 亚洲成电影在线观看青青| 国产精品久久久久久久久免费| 亚洲剧场午夜在线观看| 中文字幕影片免费在线观看| 久久久国产亚洲精品| 国产福利免费观看| 免费又黄又爽又猛大片午夜| 亚洲一区无码精品色| a在线观看免费视频| 亚洲天天做日日做天天欢毛片| 久久不见久久见免费视频7| 亚洲免费电影网站| 成人午夜性A级毛片免费| 美女免费视频一区二区| 国产gv天堂亚洲国产gv刚刚碰| 久操视频免费观看| 亚洲一区二区三区在线网站| 国产精品无码一区二区三区免费 | 99re视频精品全部免费| 亚洲免费观看在线视频| 成年女人永久免费观看片| 国产精品内射视频免费| 777亚洲精品乱码久久久久久| 成人午夜大片免费7777| 日韩a毛片免费观看| 亚洲最大福利视频网站| 成人免费视频国产| 你懂的网址免费国产| 久久精品国产亚洲AV蜜臀色欲 | 国产精品免费精品自在线观看| 亚洲爆乳成av人在线视菜奈实 | 特级做A爰片毛片免费69| 男女污污污超污视频免费在线看| 亚洲AV无码乱码在线观看富二代|