我目前正在使用analytics.js(较新版本的GA),我正在尝试跟踪我网站上的所有类型的事件,包括当用户点击指向外部网址的锚标记时。 我目前正在使用此设置:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-KEY-HERE', { 'alwaysSendReferrer': true, 'allowAnchor': true });
当我点击这样的链接时发送事件:
$(document).on("click", ".anchor-class", function (event) {
label = //get data from anchor element here ...
ga('send', 'event', 'Link Clicked', 'Click Details', label);;
return;
}
});
并且这不会向GA发送任何内容(即使事件处理程序正在调用 ga(发送...)方法)。 但是,如果我在函数开头使用 event.preventDefault(); 这个确切的技术,则会发送事件并将其显示在GA仪表板中。
为了让这项工作正常,我错过了一些设置吗?
答案 0 :(得分:2)
使用hitCallback功能:
$(document).on('click','a', function(event){
event.preventDefault();
var label = $(this).attr('href');
ga('send', 'event', 'Link Clicked', 'Click Details', label, {
'hitCallback': function(){
window.location.href = label;
}
});
});
答案 1 :(得分:1)
正如Blexy所指出的,正确的方法是使用命中回调。但是,您还需要考虑用户可能会使用某些隐私保护工具(例如Ghostery)阻止Google Analytics,在这种情况下,点击回调将永远不会被执行。以下文章解释了如何正确实现这一点:
http://veithen.github.io/2015/01/24/outbound-link-tracking.html
答案 2 :(得分:0)
我们目前遇到此问题,并将我们的分析代码从网站移植到GTM中。另一个问题是,我们有数百个网站无法向他们发布新代码以弃用页面分析,但我们已经有了GTM。
我们能够找到绑定到click事件的jQuery事件,并在GTM中编写代码,通过精确的事件处理程序删除这些单击按钮上的jQuery事件。然后我们能够应用标准GTM点击触发器和标签,因此我们没有获得双重事件。
假设您可以轻松地从页面中删除代码,以下内容应该可以很好地使用GTM。
当用户点击某个给定元素时,这会触发一个事件进行分析,它将使任何导航等待,直到相应的标记首先完成触发,然后让页面离开。
现在使用较新的GTM,这是快速而标准的方式。
Click Element
内置变量。您可以在Variables --> Configure --> Click Element
。Page Path
或Page URL
内置变量。这稍后用于帮助您确定要在哪个页面上运行触发器。function() { return {{Click Element}}.innerText; }
Page Path
matches RegEx
.*
Page Path
matches RegEx
^/path/my-page$
具体页面Page Path
matches RegEx
^/path/my-page/.*
/
的路径,或者您是否需要锚点 - 通常最好明确锚点,这样你就不会有任何有趣的事情。Click Element
matches CSS selector
a
Click Element
matches CSS selector
.container .calls-to-action a
Click Element
matches CSS selector
a[href^="http"]