earthworm icon indicating copy to clipboard operation
earthworm copied to clipboard

实现分享图显示通关时长

Open cuixiaorui opened this issue 1 year ago • 3 comments

image

实现思路

在开始答题的时候记录一个开始时间戳 在弹出结束面板的时候基于当前的时间戳 - 开始时间戳 = 总用时

why

让大家有个竞争感和炫耀感

“你看我用时那么短 厉害吧”

“我不服 你等着 看我比你用时还要短” [旺柴]

cuixiaorui avatar Mar 07 '24 02:03 cuixiaorui

如果刷题中途,浏览器“意外”关闭,时间怎么计算?

zuowendong avatar Mar 07 '24 09:03 zuowendong

如果刷题中途,浏览器“意外”关闭,时间怎么计算?

感觉是不是可以在刷题页面设计一个类似 qwerty 的工具栏显示,如

1709804008259

不过确实,遇到浏览器意外关闭或用户主动关闭的情况(比如切换课程)也需要考虑一下怎么去措施规避异常,有个方案,是不是可以不等结束才计算?而是使用定时器来记录用户正常输入的时间,监听用户长时间(30s)还没有任何输入,则暂停计时,这样就算主动关闭或者异常关闭也不会被记录断开的时间

至于有没有更好的方案,还有如果用户主动切换课程时又该如何处理,感觉大家可以讨论一下 🤔

fengstats avatar Mar 07 '24 09:03 fengstats

如此说来,应该是有 3 种异常情况需要处理

  • 用户主动关闭,离开作答页面,例如切换到主页或者课程列表页
  • 长时间未输入
  • 直接关闭浏览器

针对这 3 种情况,分别

  • onUnmounted 中执行触发,将结束时间存储到 course-history 表中
  • 长时间不输入就停止计时,或是就让时间继续跑下去 (ps:你看着时间流逝不着急嘛)
  • 监听一下 onbeforeunload 事件,存储结束时间

zuowendong avatar Mar 08 '24 01:03 zuowendong