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

What is the correct syntax for calling Google Analytics from Dojo 1.7+?

本文关键字:语法 是什么 Analytics Dojo 调用 Google      更新时间:2023-09-26

从Dojo 1.6升级到1.7开始,我的站点跟踪代码似乎抛出了一个我无法解决的错误。我比较了1.6版和1.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"});
});

无论哪种方式抛出的错误看起来像这样:

Uncaught TypeError: Object [Object Object]没有get方法A.(匿名函数)ga.js:11require.cache.dojox/分析/Urchin._213。trackPageView dojo: 15require.cache.dojox/分析/Urchin._213。GAonLoad dojo: 15require.cache.dojox/分析/Urchin._213。_gotGA dojo: 15(匿名函数)dojo:15_310

我正在使用Dojo的自定义构建,但是这个问题很容易在使用现有Dojo库的控制环境中复制。下面是一个关于JSFiddle的例子。

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

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

为了在下一个Dojo发布之前解决这个问题,您可以应用这个补丁:(下载)

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);
                 }
         });