iOS Safari 通过点击链接切换页面时跟踪用户

问题描述

我正在尝试跟踪用户在我网站的特定页面上停留的时间。我使用 sendbeacon、AJAX 作为后备和页面可见性 API。关闭或切换标签页时,它适用于所有浏览器,甚至适用于 Safari。

现在的问题是,当我在我的网站上使用导航链接时,跟踪在 Safari 中不起作用,但在所有其他浏览器中起作用。代码如下:

// Check browser Support of sendbeacon
            if(navigator.sendbeacon) {
                // Check browser Support of Page Visibility API
                var visibilityHidden,visibilityChange;
                
                // Opera 12.10 and Firefox 18 and later support 
                if(typeof document.hidden !== "undefined") {
                    visibilityHidden = "hidden";
                    visibilityChange = "visibilitychange";
                } else if(typeof document.mozHidden !== "undefined") {
                    visibilityHidden = "mozHidden";
                    visibilityChange = "mozvisibilitychange";
                } else if(typeof document.msHidden !== "undefined") {
                    visibilityHidden = "msHidden";
                    visibilityChange = "msvisibilitychange";
                } else if(typeof document.webkitHidden !== "undefined") {
                    visibilityHidden = "webkitHidden";
                    visibilityChange = "webkitvisibilitychange";
                }
                
                if(visibilityHidden !== undefined) {
                    document.addEventListener(visibilityChange,function() {
                        if(document[visibilityHidden]) {
                            var data = new FormData();
                            
                            data.append('pageid','{{page::id}}');
                            data.append('userid',uid);
                            data.append('language','{{page::language}}');
                            data.append('referer',decodeURIComponent(document.referrer));
                            data.append('start',starts);
                            data.append('duration',Math.ceil(TimeMe.getTimeOnCurrentPageInSeconds(window.location.href)));

                            navigator.sendbeacon('/time/',data);
                        }
                    });
                } else {
                    sendAjax();
                }

有人知道如何解决这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)