VUE 中如何區(qū)分是刷新頁面還是關(guān)閉頁面

知識(shí)點(diǎn)

瀏覽器關(guān)閉執(zhí)行的是 beforeunload , unload 這兩個(gè)事件;
而瀏覽器刷新執(zhí)行的是beforeunload, unload, load 三個(gè)事件;

思路

雖然刷新與關(guān)閉都會(huì)走onbeforeunload與onunload,但可能因?yàn)樗⑿略诩虞d新頁面前內(nèi)部機(jī)制還需要做一些準(zhǔn)備工作,所以刷新事件在執(zhí)行到onunload事件時(shí),用的時(shí)間會(huì)比關(guān)閉事件時(shí)間長(zhǎng)。

所以,通過時(shí)間差來判斷瀏覽器是刷新還是關(guān)閉,瀏覽器執(zhí)行beforeunload的時(shí)候給一個(gè)開始時(shí)間,執(zhí)行unload的時(shí)候給一個(gè)結(jié)束時(shí)間;判斷一下時(shí)間差;我設(shè)置的是5毫秒來區(qū)分瀏覽器的關(guān)閉和刷新,具體的時(shí)間最好還是親自測(cè)一下;

代碼

 mounted() {
    let beginTime = 0; //開始時(shí)間
    let differTime = 0; //時(shí)間差
    window.onunload = function () {
      differTime = new Date().getTime() - beginTime;
      if (differTime <= 5) {
        console.log("這是關(guān)閉");
      } else {
        console.log("這是刷新");
      }
    };

    window.onbeforeunload = function () {
      beginTime = new Date().getTime();
    };
  },
};

本人親測(cè)有效

原文鏈接:https://blog.csdn.net/weixin_46366749/article/details/111221076
作者:浩星

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容