【发布时间】:2018-03-07 01:02:29
【问题描述】:
在非 SinglePageApp 中,当您单击指向另一个页面的锚链接时,javascript 将取消并加载新页面。
当我尝试对附加到这些锚标记的谷歌分析进行异步调用时,这是一个问题。
例如,如果我有一个继续链接,并且我希望在单击它时触发 ga 事件,如果我天真地添加事件,它将排队以异步加载,但有时不会被调用,因为浏览器会取消 javascript并在处理 ga 'continue clicked' 事件之前转到下一页。
我注意到 GA 有一个名为“hitCallback”的属性,我尝试使用它,但似乎我仍然没有处理继续事件。我这样做是因为试图在这里遵循 GA 的指导方针:https://developers.google.com/analytics/devguides/collection/analyticsjs/sending-hits#handling_timeouts
$('a.js-ga-track-event').click(function(e) { // jquery attaching to a element
e.preventDefault();
var href = this.href;
var linkClicked = false;
var clickLink = function() {
if (href && !linkClicked) {
linkClicked = true;
window.location.href = href;
}
};
// As a backup, will submit the form if GA does not succeed within 0.5 seconds
setTimeout(clickLink, 500);
var name = 'continue clicked';
var label = '';
ga('send', {
'hitType': 'event',
'eventCategory': 'EXAMPLE CATEGORY',
'eventAction': 'continue clicked',
'eventLabel': label,
'hitCallback': clickLink
});
});
该链接肯定没有捕获所有事件命中。我做错了吗?
【问题讨论】:
-
另一种措施是将“传输”字段设置为“信标”,因为即使在页面卸载时也会发送数据(现在浏览器支持应该很好,并且 ga 回退到不支持 Navigator.sendBeacon(). 时的默认方法)。
标签: javascript google-analytics