超时处理器封装

//page time out handler
var pageTimeoutHandler = new function(){
    //todo:this value may be got from server.
    var defalutCheckTime = 301*1000; //s


    var registerFlag = false; 
    var timeoutFlag = false;
    var targetAddr = ""; 
    
    var timeoutHandler = null;


    var timeoutCallback = null;
    
    function _setTimeoutFlag(){
        $.getJSON(noCache("checkForTimeout.json"), null,function(jsonObj){
            if(undefined != jsonObj){
                if(undefined != jsonObj.redirectType){
                    if("timeout" == jsonObj.redirectType){
                        timeoutFlag = true;
                        targetAddr = jsonObj.address;
                        _setNoticeMsg();
                    }
                }
            }
        });
    }
    
    function _clearCheckFlag(){
        needCheckFlag = false;
        timeoutFlag = false;
    }
    
    function _resetCheck(){
        _clearCheckFlag();
        if (null != timeoutHandler){
            clearTimeout(timeoutHandler);
            timeoutHandler = null;
        }
        timeoutHandler = setTimeout(_setTimeoutFlag, defalutCheckTime);
    }
    
    function _setNoticeMsg(){
       window.parent.bootbox.alert($L('loginTimeout'), function() {
                    window.parent.window.location.href= 'login.html';
                });
    }
    
    return{
        registeCallBack:function(){
            registerFlag = true;
            _resetCheck();
        },
                
        resetCheck:function(){
            if (!registerFlag){
                return;
            }
            _resetCheck();
        },
        
        startCheck:function(){
            if (!registerFlag){
                return;
            }
            if (timeoutFlag){
                //alert(getTagTextFromXmlDoc("timeout"));
                topPageJump(targetAddr);
            }
        }
    }
}
/* add random time for url,make sure the data is latest */
function noCache(url)
{
     var delim = (url.indexOf("?") == -1) ? "?" : "&";
     return url + delim + "timeStamp=" + new Date().getTime();
}
function pageProcessStart()
{
    //for page timeout check;
    if ((document.URL.indexOf("main.html") == -1) && (document.URL.indexOf("login.html") == -1))
    {
        pageTimeoutHandler.registeCallBack();
    }

}

在文件加载完成时注册事件:

$(document).ready(function(){
    pageProcessStart();
});

在封装的ajax中调用:

 pageTimeoutHandler.startCheck();
            $.ajax({
                url:o.url,
                data:o.data,
                cache:false,
                success : function(data) {
                    pageTimeoutHandler.resetCheck();

               })

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值