我们正在尝试跟踪网页上的各种点击事件,以了解用户如何浏览我们的网站。
可以通过不同的链接到达给定页面(例如,通过原始页面顶部的链接与页脚中的链接)。因此,仅仅跟踪加载的目标页面是不够的;我们需要标记和跟踪点击事件。
Google Analytics documentation建议为“出站链接”的点击添加100毫秒的延迟,以便在加载链接目标之前完成跟踪代码。这是因为_gaq.push(['_trackEvent', category , action])
代码是异步的,在卸载页面之前需要时间来完成吗?
如果是这样,“现场”链接是否也不需要这样做?我没有看到这与链接到同一网站上的新页面有何不同;在这两种情况下都会卸载当前页面。
修改:我之后发现了Google的hitCallback
机制,可以通过回调触发您的页面加载事件。这消除了使用延迟的需要。
答案 0 :(得分:5)
在新页面之前需要进行的任何跟踪应包括轻微(<200ms)延迟。非现场,现场,表单提交等。这允许完成对分析服务器的请求。
就内部链接跟踪而言,您是否查看过页内分析报告&amp; Enhanced Link Attribute插件?它可以帮助你,而不需要额外的编码。
答案 1 :(得分:2)
Google Analytics(分析)为此类情况提供了一个hitCallback
钩子。
但是,在某些情况下该事件不会触发,因此最好使用延迟添加回退重定向。
// Pretend that all of this preceding code
// is within a link's click handler.
var _this = this;
var eventHit;
ga('send', 'event', 'Outbound Links', 'click', _this.href, {
hitCallback: function () {
eventHit = true;
document.location = _this.href;
}
});
// Set delayed fallback to your liking. This example is 1 second.
setTimeout(function () {
if (!eventHit) {
document.location = _this.href;
}
}, 1000);
答案 2 :(得分:1)
不要延迟点击次数。即使250毫秒的延迟也不能保证成功跟踪。 如果目标网址位于您的域内,只需将跟踪信息存储在local.storage上,并检查每个页面是否存在内容,并在页面加载时触发点击按钮的ga事件。 您还应该验证客户端上是否有local.storage可用,如果没有,则可以在这些情况下使用点击延迟。
答案 3 :(得分:0)
这是创建延迟的Jquery:
$("a").click(function (e) {
e.preventDefault(); //cancel the link click
var url = $(this).attr('href');//get the destination url of the link
_gaq.push(['_trackEvent', 'Links', 'Clicked', 'Buy']); //do your tracking
//go to the original destination url after a delay
setTimeout(function () { window.location.href = url; }, 250);
});
答案 4 :(得分:0)
是的,需要延迟以确保在重新加载页面之前完成GA请求。
以下是实现跟踪和延迟的Vanilla JS代码:
document.getElementById('ID').addEventListener('click', function(event) {
event.preventDefault();
_gaq.push([ '_trackEvent', 'category', 'action', 'label' ]);
setTimeout( function() {
document.location = event.target.href;
}, 200);
});