编辑标题以表明我在本地工作。
这是一个更大项目的一部分,但我已简化为以下内容:
我的google trackin代码只在FireFox 28.0中触发。相同的代码在IE或Chrome中不会触发。
使用Fiddler,我可以确认GA.js正在下载。
然后点击链接。
在Firefox 28.0中,我看到一个跟踪请求发出。
在IE和Chrome中,什么都不会发生。控制台中没有错误。代码确实进入了ga.js,我得到了一个异常(未定义)。请参阅代码下面的调用堆栈。
我在下面的代码中做了一些明显的错误吗?我已将其简化为以下内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><title>
Home Page
</title><link href="Styles/Site.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_gaq.push(['_trackPageview']);
</script>
</head>
<body>
<form method="post" action="default.aspx" id="ctl01">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEwMDUyNjYzMjhkZP9z+uGsx6oopXVpIrMvCo49qhSdX9KtN6fgRHcEez6N" />
</div>
<a onclick="_gaq.push(['_trackEvent', 'Login', 'Button Click', 'Main Link Click']);" href="#">Go To My Site</a>
</form>
</body>
<script type="text/javascript">
(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>
</html>
fww,在Chrome开发者工具,如果我检查"暂停未捕获的异常",它停在以下位置在缩小的气体。js代码:异常是:Paused on exception undefined调用栈如下:
Zc.(anonymous function).stopPropagation (ga.js:15)
Gd (ga.js:31)
Uc.(anonymous function).cb (ga.js:21)
j (ga.js:14)
E.F (ga.js:47)
a.(anonymous function) (ga.js:14)
E.O (ga.js:27)
E.push (ga.js:25)
a.(anonymous function) (ga.js:14)
onclick ((index):21)
你自己找到了问题的答案,但接着又问为什么你所做的是有效的:
@DalmTo是的,我做了。结果是,出于某种原因,我必须设域名。_gaq。push ([' _setDomainName ', '没有']);我不知道为什么?因为我在我的Dev环境和使用localhost?
你最初没有提到你在本地测试这个。如果你提到那件事,我就能指出来了!这就说明了,在解释问题的时候要千方百计!不管怎样…
如果不能正确设置cookie, GA将不会发送请求。为了正确设置它的cookie,它必须知道域。当您在本地(localhost)工作时,没有域(例如document.domain
yield和空字符串)。因此,为了解决这个问题,GA允许您将_setDomainName
设置为"none",以便它可以知道在这种情况下工作。
作为替代方案,您可以在OS hosts文件中添加一个条目(例如,windows是WindowsSystem32driversetchosts
),将您的本地主机ip(通常是127.0.0.1
)映射到域名,例如
127.0.0.1 www.test.com
然后我假设你有一个服务器设置本地例如apache或IIS或w/e,所以为它做一个虚拟主机(apache)或主机头(IIS),你现在应该能够去例如http://www.test.com/page.asp
而不是http://localhost/page.asp
或w/e然后GA应该能够设置cookie基于www.test.com而不必使用_setDomainName