从Dojo 1.7+调用Google Analytics的正确语法是什么?

时间:2011-12-27 20:39:49

标签: javascript google-analytics dojo urchin

从Dojo 1.6升级到1.7,我的网站跟踪代码似乎抛出了我无法解决的错误。我已经比较了1.61.7的API文档,但没有发现任何显着差异。

我的原始代码是<body>末尾附近的声明小部件:

<div data-dojo-type="dojox.analytics.Urchin"
    data-dojo-props='acct: "UA-88003-8"'>
</div>

我从<head>手动加载的脚本中尝试过这样的程序化版本:

require(["dojox/analytics/Urchin"], function(ga) {
    var analytics = new ga({acct: "UA-88003-8"});
});

无论哪种方式,抛出的错误都是这样的:

  

未捕获TypeError:对象[object Object]没有方法'get'   a。(匿名函数)ga.js:11   require.cache.dojox / analytics / Urchin._213.trackPageView dojo:15   require.cache.dojox / analytics / Urchin._213.GAonLoad dojo:15   require.cache.dojox / analytics / Urchin._213._gotGA道场:15   (匿名函数)道场:15   _310

我正在使用Dojo的自定义构建,但是使用库存Dojo库可以在控制环境中轻松复制此问题。这是一个example on JSFiddle

使用Dojo 1.7实例化GA跟踪器对象的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

此错误是由dojox组件中Dojo库中的bug引起的。在我的问题中实例化对象的代码是正确的。

为了解决这个问题直到下一个Dojo版本,您可以应用此补丁:(download

Index: dojox/analytics/Urchin.js
===================================================================
--- dojox/analytics/Urchin.js~ 2012-01-04 17:20:46.000000000 +0200
+++ dojox/analytics/Urchin.js 2011-08-30 23:18:13.000000000 +0300
@@ -126,7 +126,7 @@
                         //      |               pane.attr("href", ref);
                         //      |       });

-                        this.tracker._trackPageview.apply(this, arguments);
+                        this.tracker._trackPageview.apply(this.tracker, arguments);
                 }

         });