JiexC0la 2023-07-03 16:16 采纳率: 0%
浏览 20

js如何识别是页面关闭,而非页面刷新

js如何识别是页面关闭,而非页面刷新

      // 离开页面时添加提示
      window.onbeforeunload = (e) => {
        e = e || window.event;
        if (e) {
          e.returnValue = '确定要关闭此窗口吗?';
        }
        return '确定要关闭此窗口吗?';
      };

当前代码无论页面关闭,还是页面刷新都会触发阻止弹框,如何判断只在页面关闭是阻止用户,提示弹框,刷新时不阻止?

  • 写回答

2条回答 默认 最新

  • 芣苢的成长之路 2023-07-03 16:39
    关注

    以下引用了GPT生成的解答:
    要区分页面关闭和页面刷新,可以利用unload事件和beforeunload事件的差异。unload事件在页面关闭时触发,而beforeunload事件在页面关闭或刷新时都会触发。

    你可以使用以下代码来判断是否是页面关闭而不是页面刷新:

    let isPageRefreshing = false;
    
    window.addEventListener('beforeunload', (e) => {
      if (!isPageRefreshing) {
        e.preventDefault();
        e.returnValue = '确定要关闭此窗口吗?';
      }
    });
    
    window.addEventListener('unload', () => {
      isPageRefreshing = true;
    });
    
    // 其他刷新页面的代码(例如点击刷新按钮)
    function refreshPage() {
      isPageRefreshing = true;
      window.location.reload();
    }
    

    在这个代码中,我们引入了一个isPageRefreshing变量来跟踪页面是否正在刷新。当页面关闭时,beforeunload事件会被触发,但只有在isPageRefreshingfalse时才会阻止用户,并显示确认弹框。当页面刷新时,unload事件会被触发,此时我们将isPageRefreshing设为true,以区分页面关闭和页面刷新。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月3日

悬赏问题

  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。