【问题标题】:What is the correct syntax for calling Google Analytics from Dojo 1.7+?从 Dojo 1.7+ 调用 Google Analytics 的正确语法是什么?
【发布时间】:2012-01-28 18:17:50
【问题描述】:

从 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>

此后,我从&lt;head&gt; 中手动加载的脚本中尝试了这样的程序化版本:

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

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

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

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

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

【问题讨论】:

  • 如果用于在 1.6 中实例化 Urchin 的代码在 1.7 中不起作用,则这是一个错误。代码的 AMD 转换中可能引入了一个错误。您应该在 bugs.dojotoolkit.org 提交报告
  • @peller 我提交了a bug report here

标签: javascript google-analytics dojo urchin


【解决方案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);
                 }

         });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2012-10-15
    • 2012-09-23
    • 1970-01-01
    • 2014-04-19
    • 2018-11-14
    相关资源
    最近更新 更多