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

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

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

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

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

修改后的示例

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

mounted() {
    // 检测页面加载类型(是否为刷新)
    window.addEventListener('load', () => {
        const navEntries = performance.getEntriesByType('navigation');
        console.log(navEntries);
        if (navEntries[0]?.type === 'reload') {
            sessionStorage.setItem('isReload', 'true');
        }
    });

    window.addEventListener('beforeunload', this.handleBeforeUnload);
},

methods: {
    handleBeforeUnload(event) {
        console.log(performance.navigation);
        console.log(event);
        console.log(window.performance.getEntriesByType('navigation'));
        
        // 在这里处理清除逻辑
        const isReload = sessionStorage.getItem('isReload');

        if (isReload) {
            // 清除标记,不执行退出
            sessionStorage.removeItem('isReload'); // 移动清理操作到这里
            return;
        }

        // 触发退出逻辑
        event.returnValue = '';
        event.preventDefault();
        
        // 可以添加登出或其他操作
    },
}

3. 验证会话存储功能

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

总结

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?