我正在尝试跟踪用户在我网站上的特定页面上停留的时间。我使用 sendBeacon、AJAX 作为 Fallback 和 Page Visibility 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();
}
有人知道如何解决这个问题吗?