2013-04-27 57 views
0

我已经设置了我们的GA代码来处理跨域跨浏览器跟踪。谷歌分析 - 跨浏览器跟踪与jquery不添加cookie

我们的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> 

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

$(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

你在你的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像500ms,然后将location.href更改为目标URL。或者,尝试在链接中添加target='_blank'以使它们在新窗口/选项卡中打开(因为它将在新窗口中打开,“足够时间执行”的问题将变得不切实际)。如果其中任何一项有效,那么您将知道GA在重定向之前没有被给予足够的时间来执行,并且您需要执行其中一项操作以确保它有机会执行。

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

VisualEvent为检查出添加到链接(或其他元素)的事件很大书签。

+0

谢谢蜡笔小新。我关闭了该功能,但点击时仍然没有在URL地址栏中看到cookie。 – Yazmin 2013-04-30 20:17:06

+0

@Yazmin根据你的评论编辑我的答案 – 2013-05-01 15:43:57

+0

谢谢蜡笔小新。重定向是问题,虽然我无法使用.preventDefault和.setTimeout显示传递的cookie。还有其他建议吗? – Yazmin 2013-05-01 20:23:35