2012-09-11 79 views
0

我一直在寻找在一个朋友的剧本,他用谷歌Analytics跟踪代码:以这种方式(或类似的东西)谷歌分析问题

var _gaq = [ 
     ['_setAccount', 'UA-XXXXXXXX-X'], 
     ['_trackPageview'] 
    ]; 
    (function(d, t) { 
     var g = d.createElement(t), 
      s = d.getElementsByTagName(t)[0]; 
     g.src = ('https:' == location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js'; 
     s.parentNode.insertBefore(g, s) 
    }(document, 'script')); 

var SOMEOBJECT = { 
    _gaq : [], 
    account_code : "", 

    ... 

    init : function() { 
     ... 
    } 

    ... 

    _gaq.push(SOMEOBJECT.account_code); 

    ... 
} 

和一些更多的代码创建相同的跟踪代码,但以不同的方式(因为它需要在许多其他页面和各种东西上重用)。

的想法是,范围可变_gaq似乎并不存在于控制台上,所以分析没有接收到任何数据。那么会出现什么问题?对不起,没有更多的代码,但是这是从我记得,我是很古董,为什么它不工作(:

+0

我不明白这个问题。你想要做什么,哪些不起作用? – roel

+0

@roel〜在这一刻我没有很多关于发生的事情的细节,我将不得不告诉我的朋友给我发送代码,以便我可以更具体。但是我得到的是'_gaq'变量在DOM中不存在,如果我试图在控制台'._gaq'中输入它看起来好像它没有被声明,即使它是。如果我有一个对象而不是一个数组,它就可以正常工作,但是'_gaq'变量需要是一个数组,正如它在谷歌分析跟踪代码 – Roland

回答

1

你的代码的第一部分看起来很不错......只是一个正常的谷歌Analytics(分析)的重构异步代码。

我不知道肯定你的代码的第二部分...通常_gaq是一个全局对象初始化像

var _gaq = _gaq || []; 

其初始化的全局_gaq作为数组如果尚未初始化。 Onc e加载Google Analytics代码后,该数组将被替换为包含执行命令的push方法的对象。

看看该文档为the _gaq Global Objectpush方法。

+0

中所说的那样 - 它的初始化变量就像'var _gaq = _gaq || [];'。但是我不太确定他为什么会遇到问题,我想这是'_gaq:_gaq || []'这是不可能的或语义上正确的? – Roland

+1

问题是,您最终得到两个不同的_gaq - 分析代码使用的全局_gaq和定义为SOMEOBJECT属性的第二个_gaq。 – mike

+0

听起来是正确的....在这种情况下我能做些什么? – Roland