我一直在尝试创建一个计时器,当他们成为偶像超过 10 分钟时,它将让我的客户退出。我已经创建了下面的代码,只要用户不打开第二个选项卡,它就可以正常工作。我有许多客户打开第二个窗口或选项卡,当第二个选项卡打开时,计数器加速。我正在寻找一种改进以下代码的方法,以便选项卡/窗口可以更好地同步。
var cookies='off'; // var to check if cookies are turned off
var alertTimes=0; // alturnative to cookies
$(function(){
resetCookies();
var loginTime=getCookie("loginTime");
if (loginTime!=null && loginTime!=""){ cookies='on'; }
checkAlerts();
});
function resetCookies(){
setCookie("loginTime",'10',1);
alertTimes=0;
}
function checkTime() {
if(cookies=='on'){
var loginTime=getCookie("loginTime");
if (loginTime!=null && loginTime!=""){
var newTime=loginTime-1;
if(newTime==0){ autoLogout(); return false;}
setCookie("loginTime",newTime,1);
}else{ autoLogout(); return false;}
}else{
alertTimes++;
if(alertTimes>=10){ autoLogout(); return false;}
}
setTimeout(checkTime, 600000);
}
function setCookie(c_name,value,exdays){
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
function getCookie(c_name){
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++){
x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x=x.replace(/^\s+|\s+$/g,"");
if (x==c_name){ return unescape(y); }
}
}
function autoLogout(){
window.location.href=("logout.php");
}