代码提交

This commit is contained in:
Linzm committed 2026-01-16 10:48:19 +08:00
1 parent c30768d605
commit b52dcc0842
14 files changed
+3997 -38

No files matched your search

+29 -8
View File
@@ -1,4 +1,4 @@
import { createApp, onMounted } from 'vue'
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import { createRouterScroller } from 'vue-router-better-scroller'
@@ -105,13 +105,34 @@ app.use(createRouterScroller({
},
}))
onMounted(() => {
window.addEventListener('beforeunload', handleBeforeUnload);
});
function handleBeforeUnload(_event: BeforeUnloadEvent) {
localStorage.remove('code')
localStorage.remove('trialCode')
// 处理页面隐藏事件(可以区分刷新和关闭)
function handlePageHide(event: PageTransitionEvent) {
// event.persisted 为 true 表示页面被缓存(刷新),保留 code
// event.persisted 为 false 表示页面未被缓存(关闭),清除 code
if (!event.persisted) {
// 页面关闭(非刷新),清除 code 和 userId,避免下一个用户使用上一个用户的 code
localStorage.remove('code')
localStorage.remove('userId')
console.log('页面关闭,已清除 code 和 userId')
} else {
// 页面刷新(persisted === true),保留 code
console.log('页面刷新,保留 code')
}
}
// 处理页面卸载事件(作为备用方案,某些浏览器可能不支持 pagehide)
function handleBeforeUnload(_event: BeforeUnloadEvent) {
// 注意:beforeunload 无法区分刷新和关闭
// 主要依赖 pagehide 事件来处理
// 这里不做任何操作,避免误清除刷新时的 code
}
// 在应用挂载前设置事件监听器
// 优先使用 pagehide 事件(可以区分刷新和关闭)
// 在支持的浏览器中,这是最可靠的方法
window.addEventListener('pagehide', handlePageHide)
// 监听 beforeunload 作为备用(某些旧浏览器可能不支持 pagehide)
window.addEventListener('beforeunload', handleBeforeUnload)
app.mount('#app')