现在有个需求是需要一天弹出一次弹窗,这个前端怎么做
var today = new Date().toLocaleDateString();
if(localStorage.today!=today){
console.log('一天一次');
localStorage.today=today;
}
多谢老铁们
请选择 “采纳” 来采纳正确的回答, 这样可以让回答者获得积分!
1. 前端语言是什么?
2. 针对登录的用户么?
3. 同一个用户在不同的浏览器,IP 地址登录都要显示这个弹窗么?
js,vue框架
是登录的用户
没有浏览器和ip的限制,切换浏览器的话重新计时就行
用localStorage记录弹窗时间,定时检测当前时间和弹窗时间间隔,超过1一天就弹窗并更新缓存时间。
这个在同一浏览器里面算是最准确的了。不然只能用后台接口判断。
我现在是这样写的,但是第一天不知道怎么整
const stamp1 = Date.parse(new Date()); // 当前时间
localStorage.setItem("pushRouterDay_w", stamp1);
const stamp2 = new Date(
new Date().setHours(0, 0, 0, 0) + 24 * 60 * 60 * 1000 - 1
); // 目标时间:当天十一点59分
if (stamp2 - localStorage.getItem("pushRouterDay_w") >= 86400000) {
// 已超过一天
console.log("已超过一天");
} else {
// 未超过一天
console.log("未超过一天");
}
如果是页面一直不关放一天的话加在app.vue里
mounted() {
this.showMessage()
this.timer = setInterval(this.showMessage, 1000*60*60*24);
},
beforeDestroy() {
clearInterval(this.timer);
}
如果是关页面也可以的一天的话,建议后端去做,后端提供个接口判断离上次登录是否超过一天,在重新进入页面通过缓存信息自动登录时调用
然后如果是用登录名密码登录的就显示信息,然后调用开始计时的接口
页面会关闭
你那方法只差第一天的话,就localStorage.getItem为空的话,直接执行