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

yqhsw0fo  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(153)

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

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

    // make some log
    logSomeFinalizedInfo();

    return null;
}

但是,在Android手机上,这弹出了一条消息“你确定要离开吗”,这是意料之外的,我如何使用这个事件处理程序而不会有这个消息弹出?

czq61nw1

czq61nw11#

请考虑使用专门用于此目的的Beacon API
更多信息请点击此处-https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API
这些技术不仅表现出糟糕的编码模式,其中一些还不可靠,导致下次导航时页面加载性能较差。Beacon API提供了解决这些问题的标准方法。

66bbxpm5

66bbxpm52#

最后找到了解决办法,就是使用后删除句柄(removeEventListener):

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

    // make some log
    logSomeFinalizedInfo();

    removeEventListener('beforeunload', handleBeforeUnload);
}

相关问题