知識(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
作者:浩星