Asp.net 在localhost上,简单的Google分析代码仅在FireFox中有效,而在IE或Chrome中无效——ga.js中存在未定义的异常

Asp.net 在localhost上,简单的Google分析代码仅在FireFox中有效,而在IE或Chrome中无效——ga.js中存在未定义的异常,asp.net,google-analytics,Asp.net,Google Analytics,编辑标题以表明我在本地工作 这是一个更大项目的一部分,但我已经简化为以下内容 我的google trackin代码仅在FireFox 28.0中启动。 IE或Chrome中不会触发相同的代码 使用Fiddler,我可以确认正在下载GA.js。 然后单击链接。 在Firefox 28.0中,我看到一个跟踪请求发出。 在IE和Chrome中,什么都不会发生。控制台中没有错误。 代码确实进入了ga.js,我得到了一个异常(未定义)。请参阅下面的代码调用堆栈 我是否在下面的代码中做了一些明显错误的事情?

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

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

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

您自己找到了问题的答案,但随后又提出了一个问题,问您为什么这样做有效:


@是的,我做了。结果证明,出于某种原因,我必须 域名_gaq.push([''u setDomainName','none']);我不知道 为什么?因为我在我的开发环境中使用localhost

好吧,你最初没有提到你在本地测试这个。如果你提到这一点,我就能指出这一点了!只是为了展示,在解释问题时不遗余力!无论如何

如果GA不能正确设置其cookie,则不会发送请求。为了正确设置cookie,它必须知道域。当您在本地(localhost)工作时,没有域(例如,
document.domain
和空字符串)。因此,为了解决这个问题,GA允许您将
\u setDomainName
设置为“none”,这样它就可以知道如何在该场景下工作

作为替代方案,您可以向OS主机文件(例如windows为
\windows\System32\drivers\etc\hosts
)添加一个条目,以将本地主机ip(通常为
127.0.0.1
)映射到域名,例如

127.0.0.1 www.test.com


然后我假设您在本地有一个服务器设置,例如apache或IIS或w/e,所以为它创建一个virtualhost(apache)或主机头(IIS),您现在应该可以转到,例如
http://www.test.com/page.asp
而不是
http://localhost/page.asp
或w/e,然后GA应该能够基于www.test.com设置cookie,而无需使用
\u setDomainName

,从表面上看,我认为该代码没有任何错误。它与您页面上FF以某种方式处理而其他浏览器不处理的其他内容之间肯定存在冲突。。这可能只是一个发布错误。。你确实有GA脚本,包括你身体标签外面和后面的东西。。我见过GA在你不把它放在适当的地方时做一些古怪的事情。但我猜这只是你简化代码的一个发帖错别字。是的,这是正确的,这是一个发帖错别字,因为我试图简化它,并且盯着不同的版本看了8个小时:-)回复很简单。你试过把最初的ga函数代码放在第一位吗?@DalmTo是的,我试过了。结果证明,出于某种原因,我必须设置域名_gaq.push([''u setDomainName','none']);我不知道为什么?因为我在我的开发环境中使用localhost?谢谢!这是有道理的!
 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)