前端实现 弹窗时间一天弹一次,且七天后不再弹

关于两个条件的思路:

1.一天一次:获取此刻弹窗的时间,存储到本地。再获取当前时间戳与存储的弹窗时间相减,如果大于一天的时间戳则满足一天弹一次的条件,反之则不满足;(也可用toDateString(),用存储的日期直接与当前的日期进行比较,如果不相等则是今天未弹过,便可弹出公告再存储日期;两种方式根据需求来选择)

2.七天:获取指定时间的第七天时间戳和当前时间戳相比较,大于则满足七天内弹框,反之;

代码

<scrpit>

data(){
    // 七天后的时间戳
    sevenDaysTime: '',
    // 控制公告弹框
     poupTime: uni.getStorageSync('poupTime') || '',
    // 判断今天是否弹出公告
     showCouponNew: false,
},

onLoad()=>{
        //1.页面加载 获取指定时间的第七天时间戳
            
         //日期的后7天日期
             var sevenDays = new Date('2023-06-16');
             sevenDays.setDate(sevenDays.getDate() + 7);
             console.log(sevenDays.getTime(), '指定日期的七天后的时间戳'); //1687478400000
             this.sevenDaysTime = sevenDays.getTime();

        //2.执行弹窗函数
        this.handleToast();

     },

   methods:{
        handleToast(){
           // new Date().getTime() - this.poupTime > 1000 * 60 * 60*24: 一天弹一次判断条件
           //new  Date().getTime() < this.sevenDaysTime: 七天后不弹判断条件
           if ((!this.poupTime || new Date().getTime() - this.poupTime > 1000 * 60 *60*24)&& new Date().getTime() < this.sevenDaysTime) {
                    // 显示弹窗相关操作
                    this.$refs.announce.show();
                    this.showCouponNew = false;
                     //存储当前弹窗的时间
                     uni.setStorageSync('poupTime', new Date().getTime());
                 } else {
                          this.showCouponNew = true;
                       }
                });
         }

    }

</script>

之前没做过这种需求 记录一下实现代码;目前想到的方法就是这样,有更简洁的方法欢迎大佬提出!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值