3

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

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

Uncaught TypeError: Object [object Object] has no method 'get' a.(anonymous function) 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 dojo:15 (匿名函数) dojo:15 _310

我正在使用 Dojo 的自定义构建,但这个问题很容易在控制环境中使用股票 Dojo 库复制。这是JSFiddle 上的一个示例

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

4

1 回答 1

1

此错误是由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);
                 }

         });
于 2012-01-06T20:33:40.243 回答