在本地主机上,简单的Google Analytic代码只能在FireFox中工作,而不能在IE或Chrome中工作-在g



编辑标题以表明我在本地工作。

这是一个更大项目的一部分,但我已简化为以下内容:

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

最新更新