<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 評論 :: 2 Trackbacks
    4年前寫過一篇《腳本綁定回調》  進行了一些有趣的嘗試,這些嘗試現(xiàn)在在一些web產品中已經應用了好幾年了。這兩年隨著海外用戶的增多,用戶情況的復雜化,我們的服務部署也開始復雜化了,有一些用戶訪問A域名失敗,訪問B域名就可能很暢順,另一些用戶則相反。而且很多時候這并不是gslb這樣的調度可以及時檢測到和快速調整的,不由得想想,能不能進行失敗重試呢?其實也很簡單把4年前的代碼改了一改,做了一個原理性的實驗:

    <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ù)據被cache,運行到這一行的時候有可能回調已經完成,窗口已經關閉。
            }
        }
    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;//故意制造錯誤引發(fā)重試
            var url2 = "http://g.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=b"+id;//故意再次制造錯誤引發(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 
    = "無法連接到服務器";
                }
            }(id);
            loadjs(url,callback,errcallback,url2,url3);
        }
    }
    </SCRIPT>
    </HEAD>
    <BODY onload="init()">
    12345(非法帳號)的訪問量:
    <span id="12345"></span><BR>
    123456 的訪問量:
    <span id="123456"></span><BR>
    20050606 的訪問量:
    <span id="20050606"></span><BR>
    </BODY>
    </HTML>

    故意在前兩次請求中制造了錯誤,嘗試到第三個url的時候才成功。
    posted on 2011-07-19 20:50 emu 閱讀(2650) 評論(0)  編輯  收藏 所屬分類: web優(yōu)化
    主站蜘蛛池模板: 日本亚洲欧美色视频在线播放| 无码精品一区二区三区免费视频| 国产小视频免费观看| 久久精品国产亚洲AV电影网| 国产成人啪精品视频免费网| 日产久久强奸免费的看| 国产亚洲人成网站观看| 欧洲人免费视频网站在线| 国产亚洲成AV人片在线观黄桃| 麻豆精品不卡国产免费看| 无码日韩精品一区二区免费暖暖 | 亚洲最大av无码网址| 9久热精品免费观看视频| 亚洲综合色区中文字幕| 亚洲熟女少妇一区二区| 成年人免费观看视频网站| 久久国产精品成人免费| 久久精品熟女亚洲av麻豆| 337p欧洲亚洲大胆艺术| 亚洲精品高清一二区久久| 91精品免费在线观看| 精品无码国产污污污免费网站国产 | 欧洲亚洲综合一区二区三区| 免费大黄网站在线观看| 亚洲av产在线精品亚洲第一站| 亚洲精品久久久www | 国产性生交xxxxx免费| 91人成网站色www免费下载| 青青久久精品国产免费看| 亚洲人成片在线观看| 亚洲国产精品无码久久SM| 国产免费人成在线视频| 国产成人免费高清激情明星| 成人网站免费看黄A站视频| 美女黄色毛片免费看| 亚洲日韩国产欧美一区二区三区| 亚洲短视频男人的影院| 亚洲人色婷婷成人网站在线观看| 午夜dj免费在线观看| 青青视频观看免费99| 最近免费中文字幕高清大全|