收藏
回答

ios微信打开h5链接,在关闭时无法发出埋点记录,监听了好多生命周期都不行?

场景:因为有需求,在ios微信,打开h5预览页面开始记录预览开始时间,然后点击左上角 x 关闭h5时,调用埋点接口,统计用户在页面留存时间多数

问题:在安卓、浏览器内一切正常,但是ios内会存在问题,点击左上角 x 关闭h5时,调用埋点接口时,有时会发出,有时不会发出

查询了好多资料,都没有找到解决问题,所以发出帖子来,请大家一起帮忙研究研究

发帖求助,先感谢官方及各路大佬的解答

代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    document.addEventListener("visibilitychange", function logData() {
        if (document.visibilityState === "hidden") {
            navigator.sendBeacon("https://xxx/save", JSON.stringify({
                "userId": "11111",
                "startTime": "2024-02-27 16:11:26.35",
                "endTime": "2024-02-27 16:11:31.587",
                "content": "{\"OS\":\"iphone os\",\"OSVersion\":\"17\",\"browser\":\"applewebkit\"}"
            }));
        }
    });
    // 监听网页关闭或刷新
    window.addEventListener('unload', logData, false);
    function logData() {
        navigator.sendBeacon("https://xxx/save", JSON.stringify({
            "userId": "22222",
            "startTime": "2024-02-27 16:11:26.35",
            "endTime": "2024-02-27 16:11:31.587",
            "content": "{\"OS\":\"iphone os\",\"OSVersion\":\"17\",\"browser\":\"applewebkit\"}"
        }));
    }

    document.addEventListener("pagehide", function logData() {
        navigator.sendBeacon("https://xxx/save", JSON.stringify({
            "userId": "33333",
            "startTime": "2024-02-27 16:11:26.35",
            "endTime": "2024-02-27 16:11:31.587",
            "content": "{\"OS\":\"iphone os\",\"OSVersion\":\"17\",\"browser\":\"applewebkit\"}"
        }));
    });
</script>
</body>
</html>
回答关注问题邀请回答
收藏

2 个回答

  • 茸茸
    茸茸
    01-03

    同问,下面的方法全部无效

    window.onbeforeunload = function (e) {

    var dialogText = '木确定要离开此页面吗22222?';

    e.returnValue = dialogText;

    return dialogText;

    };


    window.addEventListener('pagehide', async function (event) {

    });


    window.addEventListener("pagehide", async function () {

    }, false);

    window.addEventListener("pageshow", async function () {

    });


    window.addEventListener('unload', function (event) {

    });

    window.addEventListener("visibilitychange", function (e) {

    });


    01-03
    有用
    回复
  • 九思
    九思
    2024-03-05

    顶帖,求助,还是没有发现解决办法

    2024-03-05
    有用
    回复
登录 后发表内容