Vue项目,JS怎么控制一自然天里只在第一次打开的时候触发某个事件?

项目需求:
一天内只在第一次打开的时候触发某个事件?

阅读 3.4k
5 个回答

localStorage,然后设置过期时间做判断是否是在一天内

问题分析:

需要一个标志位 ,比如flag ,记录一下某个事件被触发的时间戳。

某事件比如是点击按钮button时,alert 一句话 “hello world”。

问题是这个flag 存哪?localstorage里面,用户一清除缓存就清了。

所以这个flag 应该是存在于服务端的,然后你的项目一起来,就要去服务端去获取flag。

当去触发这个事件的时候(点击按钮),判断时间戳是不是在今天内(范围就是今天零点到点击按钮的那一刻)。

flag在这个范围内,那就是触发过了,不再alert ‘hello world’;

flag不在这个范围内,那就是今日未曾触发,alert ‘hello world’;并且设置flag=点击按钮的那一刻的时间戳。向服务端发请求,存入数据库。

上面都是新手拙见,有错误请指正哈。大家不要笑话我。。


重新整理一下语言:

当去触发这个事件的时候(点击按钮),从localstorage中获取flag的值。

1、 如果flag存在,判断时间戳是不是在今天内(范围就是今天零点到点击按钮的那一刻)。

——> flag在这个范围内,那就是今日触发过了,不再alert ‘hello world’;

——> flag不在这个范围内,说明flag的值就是今天之前的某个时间,那就是今日未曾触发,可以 alert ‘hello world’;并且设置flag=点击按钮的那一刻的时间戳。请求后台接口,将flag的值存入数据库、并且写入localstorage中(今天再点就直接从localstorage中取值了)。

2、如果flag不存在(可能是用户清除了缓存、也可能是从未点击过),请求后台接口读取flag的值。

——> 如果flag不存在,说明此处从未点击过。那就点呗。

——> 如果flag存在,那就是说用户清过缓存,那就回到1。

完了。

这个问题就类似于阅读隐私条款一样,第一次点击阅读,之后就不在弹出。
叫后端写一个接口,配合接口做会比较好。

我感觉还是第一个说的用 localStorage 最方便,前端自己全部搞定。
第一次判断有无,没有就存入并触发;
后面对比这个时间,同一天不触发,不是同一天触发,并更新这个值。

这个本质是需要一个标志性信息,然后vue可以利用这个标志信息。
这个信息可以是
1.从服务器端获取,
2.也可能是本地的诸如cookie、localStorage信息的处理。
但更多的是1和2的结合。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏