ZBLOG

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

在现代浏览器中,beforeunload 事件的处理方式已经有了一些变化。根据你的代码和问题描述,似乎你希望在用户关闭页面时弹出一个确认框,但没有看到效果。这可能是由于以下几个原因:

  1. event.returnValue 的设置: 在某些浏览器(如 Chrome)中,仅仅调用 event.preventDefault() 和设置 event.returnValue = '' 不再触发自定义的提示信息,而是会显示一个通用的确认离开页面的提示。

  2. 用户体验政策:一些浏览器已经实施了严格的用户体验政策,限制了自定义消息内容。例如,Chrome 会忽略自定义消息并显示默认文本。

  3. 事件监听位置:确保你在合适的生命周期钩子中添加和移除事件监听器。在 Vue.js 中,你可以使用 mounted 钩子来添加事件监听器,并在 beforeDestroyunmounted 钩子中移除它们。

  4. 检查条件逻辑:确保你的 isReload 判断逻辑正常工作。你可能需要调试一下是否正确进入到退出逻辑部分。

下面是针对以上点的一些建议:

  1. mounted() {
  2. window.addEventListener('beforeunload', this.handleBeforeUnload);
  3. },
  4. methods: {
  5. handleBeforeUnload(event) {
  6. const isReload = sessionStorage.getItem('isReload');
  7. if (isReload) {
  8. sessionStorage.removeItem('isReload');
  9. return;
  10. }
  11. // 设置 event.returnValue 为空字符串以便于显示提示
  12. event.preventDefault(); // 这句通常是不必要的,但是加上可以提高兼容性
  13. event.returnValue = ''; // 必须设置这个属性才能触发警告框
  14. },
  15. },

最后测试

  • 确保没有其他 JavaScript 错误干扰。
  • 检查开发者工具中的控制台,看是否有任何相关错误或警告。
  • 尝试在不同浏览器(如 Firefox、Safari)中查看效果,以确定是否为特定于浏览器的问题。

如果以上方法仍然不能解决问题,请考虑简化代码或逐步调试,以找出导致问题的根源。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?