跳到主要内容

common函数处理

commonjs监听loading与断网

  • event监听加载离开等事件,处理loading与断网提示
  • event:pagehide事件无法兼容

监听页面关闭

参考:https://cloud.tencent.com/developer/article/1875514

  • 由于不是各大浏览器的兼容情况不一,存在处理机制不同
  • iOS、HarmonyOS、Android分别不同机制
let isEndSendOK = false;
function report() {
if (isEndSendOK) {
return;
}
isEndSendOK = true;
fetch('xxxxxx');
}

window.addEventListener('beforeunload', report);
window.addEventListener('pagehide', report);
window.addEventListener('unload', report);

// IOS14 之前不会冒泡,只能监听document
document.addEventListener('visibilitychange', () => {
if (document.visibilityState !== 'visible') {
report();
} else {
// 如果界面又显示了,说明没有关闭,重置标志位
isEndSendOK = false;
}
});

需要说明:上面的处理机制只有关闭页面才能触发,而Safari的前进逻辑并不会将页面关闭,只有返回才能触发

猜想问题出在

猜测是Safari的“冷冻”的机制有关,导致页面被挂起也不是关闭,当用户返回可提高体验