在非SinglePageApp中,当您点击指向另一个页面的锚链接时,javascript将取消,新页面将加载。
当我尝试对附加到这些锚标记的谷歌分析进行异步调用时,这是一个问题。
例如,如果我有一个继续链接并且我希望在点击它时触发ga事件,如果我天真地添加事件,它将排队异步加载但有时不会被调用因为浏览器将取消javascript然后在ga'继续点击之前转到下一页。事件已处理。
我注意到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
});
});
该链接绝对无法捕获所有事件命中。我做错了吗?
答案 0 :(得分:1)
hitCallBack
确实是你想要使用的。整体代码逻辑看起来不错,但是,我看到了:
GA
而不是ga
,因为它应该是)send
调用的语法与doc example 相反,为什么不试试这个:
ga('send', 'event', 'EXAMPLE CATEGORY', 'continue clicked', label, {
hitCallback: clickLink
});
答案 1 :(得分:1)
将传输字段设置为' beacon'。很简单。