如何在没有弹出消息的情况下使用onbeforeunload事件处理程序?

时间:2020-07-20 22:59:55

标签: javascript onbeforeunload

嗨,我正在尝试使用onbeforeunload事件记录页面的某些最终日志 (我不能在访问过程中这样做,因为我必须在用户离开之前立即获取日志。)

function handleBeforeUnload(evt) {
    evt.preventDefault();
    evt.returnValue = '';

    // make some log
    logSomeFinalizedInfo();

    return null;
}

但是,在Android手机上,这会弹出一条消息“您确定要离开”,这是不期望的,我如何在不弹出此消息的情况下使用此事件处理程序?

谢谢!

2 个答案:

答案 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);
}