Какой правильный синтаксис для вызова Google Analytics из Dojo 1.7+? - PullRequest
3 голосов
/ 28 декабря 2011

Начиная с обновления с Dojo 1.6 до 1.7, мой код отслеживания сайта, похоже, выдает ошибку, которую я не могу устранить.Я сравнил документы API для 1.6 и 1.7 и не вижу существенных различий.

Мой исходный код был декларативным виджетом в конце <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"});
});

В любом случае выбрасываемая ошибка выглядит примерно так:this:

Uncaught TypeError: Object [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 dojo: 15 (анонимная функция) dojo: 15 _310

Я использую пользовательскую сборку Dojo, но эта проблема легко повторяется в контрольной среде с использованием стандартных библиотек Dojo.Вот пример для JSFiddle .

Как правильно создать экземпляр объекта отслеживания GA с помощью Dojo 1.7?

1 Ответ

1 голос
/ 07 января 2012

Эта ошибка вызвана ошибкой в библиотеке Dojo в компоненте dojox. Код для создания объекта в моем вопросе правильный.

Чтобы обойти это до следующего релиза 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);
                 }

         });
...