ZBLOG

// import api from '@/store/api'; export default { name: 'App', computed: { assetTag() { return this.$store.getters['global/assetTag']; }, }, watc...

根据你的描述,如果 isReload 一直为 true,可能是由于在页面加载时设置该值的逻辑有问题。下面是一些可以检查和调整的地方,以确保你能正确管理 isReload 标志:

1. 检查 isReload 的设置

你在 mounted 钩子中使用了以下代码来设置 isReload

  1. window.addEventListener('load', () => {
  2. const navEntries = performance.getEntriesByType('navigation');
  3. console.log(navEntries);
  4. if (navEntries[0]?.type === 'reload') {
  5. sessionStorage.setItem('isReload', 'true');
  6. }
  7. });

这段代码会在页面加载后检查导航条目。如果检测到类型为 'reload',它将把 isReload 设置为 'true'。这个逻辑没问题,但要确保这个事件是在适当的时候被触发。

2. 确保移除标志的逻辑执行顺序

如果用户刷新页面,你需要在合适的位置移除 isReload 标志。在你的 handleBeforeUnload 方法中,你已经写了清除标志的代码,但需要确保在合适的时候调用,并且不干扰正常流程。

修改后的示例

尝试以下代码结构,确保能够正确管理状态:

  1. mounted() {
  2. // 检测页面加载类型(是否为刷新)
  3. window.addEventListener('load', () => {
  4. const navEntries = performance.getEntriesByType('navigation');
  5. console.log(navEntries);
  6. if (navEntries[0]?.type === 'reload') {
  7. sessionStorage.setItem('isReload', 'true');
  8. }
  9. });
  10. window.addEventListener('beforeunload', this.handleBeforeUnload);
  11. },
  12. methods: {
  13. handleBeforeUnload(event) {
  14. console.log(performance.navigation);
  15. console.log(event);
  16. console.log(window.performance.getEntriesByType('navigation'));
  17. // 在这里处理清除逻辑
  18. const isReload = sessionStorage.getItem('isReload');
  19. if (isReload) {
  20. // 清除标记,不执行退出
  21. sessionStorage.removeItem('isReload'); // 移动清理操作到这里
  22. return;
  23. }
  24. // 触发退出逻辑
  25. event.returnValue = '';
  26. event.preventDefault();
  27. // 可以添加登出或其他操作
  28. },
  29. }

3. 验证会话存储功能

确认浏览器没有禁用会话存储功能,有时隐私设置、扩展程序或者私人模式会影响这个行为。在不同的浏览器和环境中测试此功能以排查潜在的问题。

总结

通过整理你的代码并确保按预期顺序运行,可以让你更好地控制是否要显示离开提示。如果有进一步的问题,请提供更多上下文,比如具体执行过程中的输出或异常信息,这样我可以帮助你更好地分析。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22895

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?