Google Analytics - 使用jquery不添加Cookie的跨浏览器跟踪

时间:2013-04-27 17:46:13

标签: jquery cross-browser google-analytics

我已设置GA代码来处理跨域的跨浏览器跟踪。

我们的GA代码:

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-1']);
_gaq.push(['_setDomainName', 'firstdomain.com']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
_gaq.push(['_trackEvent', 'Error-404', 'page: ' + document.location.pathname + document.location.search,' ref: ' + document.referrer ]);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>

将onClick _link添加到页面上的元素的jQuery代码:

$(document).ready(function() {
// Add onClick _link to all <a> elements on page where href contains sister sites
  $("a[href*='seconddomain.com'],a[href*='thirddomain.com'],a[href*='fourthdomain.com']").click(function() {
    _gaq.push(['_link', this.href]);
  return false;
});

问题是,虽然我知道您没有在页面上看到链接更改,但当您单击它时,cookie应该在浏览器地址字段中显示新链接,但这不是什么发生。

有谁看到我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您缺少jQuery代码中的右括号和parens。您关闭.click函数,但不关闭.ready函数。应该是:

$(document).ready(function() {
// Add onClick _link to all <a> elements on page where href contains sister sites
 $("a[href*='seconddomain.com'],a[href*='thirddomain.com'],a[href*='fourthdomain.com']").click(function() {
    _gaq.push(['_link', this.href]);
    return false;
  });
}); // <-- missing this

编辑

既然你说这个修复不起作用(注意,你还是需要这样做)......

我知道代码本身有效,我已经测试过了。因此,您的页面上可能还有其他内容,某些条件或其他代码阻止其执行。

要检查的一些事项:

  • 在应用点击监听器时,链接是硬编码还是存在?

如果您的链接是在.click代码执行后的某个时间动态生成的(即使它只是href attribs),那么该事件将不会附加到链接。要解决此问题,您需要执行一些委派事件侦听而不是直接事件侦听。基本上,我们的想法是将事件侦听器附加到从一开始就存在的某个父对象,然后在事件冒泡期间过滤链接。以下是如何执行此操作的示例:

$(document).ready(function() {
  $('body').on("click", "a[href*='seconddomain.com'],a[href*='thirddomain.com'],a[href*='fourthdomain.com']", function(event){
    _gaq.push(['_link', this.href]);
    return false;
  });
});
  • 也许GA代码在重定向之前没有足够的时间执行..

尝试添加.preventDeafault以禁止正常重定向,然后执行.setTimeout类似500毫秒,然后将location.href更改为目标网址。或者,尝试在链接中添加target='_blank'以在新窗口/选项卡中打开它们(因为它将在新窗口中打开,“足够的执行时间”问题变得没有意义)。如果其中任何一个工作,那么您将知道GA在重定向之前没有足够的时间执行,并且您需要执行其中一项以确保它有机会执行。

  • 也许您有其他代码覆盖/覆盖链接的点击事件?

VisualEvent是一个很棒的书签,用于检查添加到链接(或其他元素)的事件。