JS 一天执行一次的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengkang511/article/details/86064710

一天执行一次,很常用的场景,思路就是利用一个标识,今天没有这个标识就执行操作,然后添加标识,后续判断标识存在就不再执行相应的操作。具体实现是添加一个cookie,第一次没有这个cookie,就执行操作,同时添加一个到第二天凌晨过期的cookie。

代码如下:

function DoOne(key,method) {
	var v = getCookie(key);
	if (!v) {
		method("do something");
		//获取第二天凌晨到当前时间的秒数
		var tim_sec = 24 * 60 * 60 - (new Date().getHours() * 60 * 60 + new Date().getMinutes() * 60 + new Date().getSeconds());
		setCookie(key, "1", tim_sec);
	}
}
function dosome(msg){
	console.log(msg);
}
//写cookies 
function setCookie(name, value, second) {
	if (!second) {
		second = 7 * 24 * 60 * 60;//默认7天
	}
	var exp = new Date();
	exp.setTime(exp.getTime() + second * 1000);
	document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
}
//读取cookies 
function getCookie(name) {
	if (document.cookie.length > 0) {
		c_start = document.cookie.indexOf(name + "=");//获取字符串的起点
		if (c_start != -1) {
			c_start = c_start + name.length + 1;//获取值的起点
			c_end = document.cookie.indexOf(";", c_start);//获取结尾处
			if (c_end == -1) c_end = document.cookie.length;//如果是最后一个,结尾就是cookie字符串的结尾
			return decodeURI(document.cookie.substring(c_start, c_end));//截取字符串返回
		}
	}
	return "";
}

调用:

DoOne("key", dosome);

结果,每天第一次打开这个页面时都会输出

猜你喜欢

转载自blog.csdn.net/fengkang511/article/details/86064710