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

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

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

    emu in blogjava

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      171 隨筆 :: 103 文章 :: 1052 評(píng)論 :: 2 Trackbacks
    4年前寫過一篇《腳本綁定回調(diào)》  進(jìn)行了一些有趣的嘗試,這些嘗試現(xiàn)在在一些web產(chǎn)品中已經(jīng)應(yīng)用了好幾年了。這兩年隨著海外用戶的增多,用戶情況的復(fù)雜化,我們的服務(wù)部署也開始復(fù)雜化了,有一些用戶訪問A域名失敗,訪問B域名就可能很暢順,另一些用戶則相反。而且很多時(shí)候這并不是gslb這樣的調(diào)度可以及時(shí)檢測(cè)到和快速調(diào)整的,不由得想想,能不能進(jìn)行失敗重試呢?其實(shí)也很簡單把4年前的代碼改了一改,做了一個(gè)原理性的實(shí)驗(yàn):

    <HTML>
    <HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    var isIE = !!window.ActiveXObject;
    var useFragment=false;
    function loadjs(url,callback,errcallback,url2,url3){
        
    if(isIE){
            
    if(useFragment){
               
    var df = document.createDocumentFragment();    
                df.visitCountCallBack 
    = function(data){
                    s.onreadystatechange
    =null;
                    df
    =null;
                    callback(data);
                }
                
    var s = df.createElement("SCRIPT");
                df.appendChild(s);
                s.onreadystatechange
    =function (ec,cb,u2,u3){
                    
    return function(){
                        
    if(s.readyState=="loaded") {
                            s.onreadystatechange
    =null;
                            df
    =null;
                            
    if(!u2){
                                ec();
                            }
    else{
                                loadjs(u2,cb,ec,u3)
                            }
                        }
                    }
                }(errcallback,callback,url2,url3)
                s.src 
    = url;
            }
    else{
                
    var i=new ActiveXObject("htmlfile");
                i.open();
                i.parentWindow.visitCountCallBack
    =function(i){
                    
    return function(d){
                        i.parentWindow.errcallback
    =null;
                        i
    =null;
                        callback(d);
                    }
                }(i);
                i.parentWindow.errcallback
    =function(ec,cb,u2,u3){
                    
    return function(){
                        i.parentWindow.errcallback
    =null;
                        i
    =null;
                        
    if(!u2){
                            ec();
                        }
    else{
                            loadjs(u2,cb,ec,u3)
                        }
                    }
                }(errcallback,callback,url2,url3)
                i.write(
    "<script src=\""+url+"\"><\/script><script defer>setTimeout(\"errcallback()\",0)<\/script>")
                
    if(i)i.close();//如果數(shù)據(jù)被cache,運(yùn)行到這一行的時(shí)候有可能回調(diào)已經(jīng)完成,窗口已經(jīng)關(guān)閉。
            }
        }
    else{
            
    var i = document.createElement("IFRAME");    
            i.style.display
    ="none";
            i.callback
    =function(o){
                callback(o);
                i.contentWindow.callback
    =null;
                i.src
    ="about:blank"
                i.parentNode.removeChild(i);
                i 
    = null;
            };
            i.errcallback 
    = function(ec,cb,u2,u3){
                
    return function(){
                        
    if(!u2){
                            ec();
                        }
    else{
                            loadjs(u2,cb,ec,u3)
                        }
                }
            }(errcallback,callback,url2,url3);
            i.src
    ="javascript:\"<script>function visitCountCallBack(data){frameElement.callback(data)};<\/script><script src='"+url+"'><\/script><script>setTimeout('frameElement.errcallback()',0)<\/script>\"";
            document.body.appendChild(i);
        }
    }

    function init(){
        
    var spans = document.getElementsByTagName("span");
        
    for(var i=0;i<spans.length;i++){
            
    var id = spans[i].id;
            
    var url = "http://g.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=a"+id;//故意制造錯(cuò)誤引發(fā)重試
            var url2 = "http://g.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=b"+id;//故意再次制造錯(cuò)誤引發(fā)重試
            var url3 = "http://g.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin="+id;
            
    var callback = function(id){ return function(data){
                document.getElementById(id).innerHTML 
    = data.visitcount;
                }
            }(id);
            
    var errcallback = function(id){ return function(){
                document.getElementById(id).innerHTML 
    = "無法連接到服務(wù)器";
                }
            }(id);
            loadjs(url,callback,errcallback,url2,url3);
        }
    }
    </SCRIPT>
    </HEAD>
    <BODY onload="init()">
    12345(非法帳號(hào))的訪問量:
    <span id="12345"></span><BR>
    123456 的訪問量:
    <span id="123456"></span><BR>
    20050606 的訪問量:
    <span id="20050606"></span><BR>
    </BODY>
    </HTML>

    故意在前兩次請(qǐng)求中制造了錯(cuò)誤,嘗試到第三個(gè)url的時(shí)候才成功。
    posted on 2011-07-19 20:50 emu 閱讀(2651) 評(píng)論(0)  編輯  收藏 所屬分類: web優(yōu)化
    主站蜘蛛池模板: 成人女人A级毛片免费软件| 亚洲色成人网一二三区| 在线视频免费观看高清| 日韩电影免费在线观看网站| 色婷婷六月亚洲综合香蕉| 亚洲欧洲精品久久| 亚洲AV无码成人专区片在线观看 | 国产成人A亚洲精V品无码 | 77777亚洲午夜久久多喷| 亚洲av无码不卡| 国产亚洲色视频在线| 又色又污又黄无遮挡的免费视| 国产在线观看免费观看不卡| 99精品视频在线免费观看| 一个人免费视频观看在线www| 一本岛v免费不卡一二三区| 美女又黄又免费的视频| 亚洲欧美国产精品专区久久| 亚洲另类春色校园小说| 亚洲美女aⅴ久久久91| 亚洲午夜精品一区二区| 亚洲AV日韩精品久久久久| 亚洲精品乱码久久久久久按摩| 亚洲情侣偷拍精品| 亚洲福利精品一区二区三区 | 爱情岛论坛亚洲品质自拍视频网站 | 亚洲AV成人一区二区三区AV| 亚洲熟妇无码AV在线播放| 久久久久国产成人精品亚洲午夜 | 无码一区二区三区亚洲人妻| 精品国产成人亚洲午夜福利| 久久精品国产99国产精品亚洲| 亚洲国产精品成人精品小说| 亚洲国产日韩在线人成下载| 亚洲精品在线免费观看| 亚洲第一永久在线观看| 亚洲专区中文字幕| 狠狠色香婷婷久久亚洲精品| 亚洲欧洲AV无码专区| 国产AV无码专区亚洲AV蜜芽 | 四虎永久在线精品免费影视|