嗨,我正在尝试使用onbeforeunload事件记录页面的某些最终日志 (我不能在访问过程中这样做,因为我必须在用户离开之前立即获取日志。)
function handleBeforeUnload(evt) {
evt.preventDefault();
evt.returnValue = '';
// make some log
logSomeFinalizedInfo();
return null;
}
但是,在Android手机上,这会弹出一条消息“您确定要离开”,这是不期望的,我如何在不弹出此消息的情况下使用此事件处理程序?
谢谢!
答案 0 :(得分:1)
请考虑使用专门用于此目的的Beacon API
。
有关更多信息,请点击此处-https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API
这些技术不仅代表不良的编码模式,而且其中一些不可靠,并导致下一次导航的页面加载性能较差。信标API提供了解决这些问题的标准方法。
答案 1 :(得分:0)
最后找到了解决方案,即在使用后删除处理程序( removeEventListener ):
function handleBeforeUnload(evt) {
evt.preventDefault();
evt.returnValue = '';
// make some log
logSomeFinalizedInfo();
removeEventListener('beforeunload', handleBeforeUnload);
}