js的执行时间控制

 

使用cookie设置js只执行一次 设置一个cookie变量存储时间,每个页面访问后都用js去更新这个时间。为了避免开着多个页面,多次弹出窗口,还需要再设置一个cookie(isalert)为标识是否已经弹出过窗口。每个页面的JS代码都要有一个setTimeout去间隔时间读取这个cookie,如果间隔达到了24小时。就弹出窗口,并将isalter设置。
function setUCookie(u_name,value){
	var exdate=new Date()
	exdate.setHours(exdate.getHours() + 1); //1小时后过期
	document.cookie=u_name+ "=" +escape(value)+"; expires="+exdate.toGMTString();
}

function getUCookie(u_name){
	if (document.cookie.length>0){ 
		u_start=document.cookie.indexOf(u_name + "=")
	if (u_start!=-1){ 
		u_start=u_start + u_name.length+1 
		u_end=document.cookie.indexOf(";",u_start)
		if (u_end==-1) u_end=document.cookie.length
			return unescape(document.cookie.substring(u_start,u_end))
		} 
	}
	return ""
}

function _setTimeout(){
	if(getUCookie("uTimeCookie")!=1){
	alert('1小时后又会出来了')
	}
}
_setTimeout()
setUCookie("uTimeCookie","1")
多次触发时间,在一定延迟内只执行一次 在外部做一个计时器变量,当进入事件的回调函数时,启动这个计时器,倒计时n秒后,计时器自动关闭。每次进入事件回调函数时都要判断这个计时器是否为启动状态,如果是启动状态,直接跳出不执行事件即可。
$(function(){
      var timeoutflag = null;
      $('#inputAddress1').click(function() {
        if(timeoutflag != null){
          clearTimeout(timeoutflag);
        }
 
          timeoutflag=setTimeout(function(){
            dosomething();//此处是一个会请求远程的ajax 异步操作;
          },500);
         
      });
  
     function dosomething(){
        alert(1);
    }
    });
   
   
   
   
   

 

 

 

你可能感兴趣的:(javascript,cookie)