Angular.js и эксперимент с контентом Google Analytics

Итак, я пытаюсь реализовать эксперимент с контентом аналитики Google на веб-сайте, который сделан как угловой одностраничный веб-сайт.

Я установил две версии моей домашней страницы, как / и /?v=2, вставленные в код Google, как указано, в самом верху тега <head>, и все работало нормально, Google отправлял 30% трафика на одну и 70% трафика. ко второй версии страницы.

Проблема возникла, когда я попытался получить доступ, скажем, к /contact, Google, очевидно, подумал бы, что я все еще имею доступ к /, и отправил бы меня на /v=2 (если бы я был частью 30%).

Я даже не уверен, почему это происходит, но это происходит, я думаю, что могло бы помочь, если бы функции Google запускались не сразу после загрузки, а только после того, как загрузится угловой controller главной страницы. Но я мог бы получить код Google работает в указанном контроллере..

Кто-нибудь имел дело с этой проблемой раньше?




Ответы (2)


Вместо этого вы можете использовать API https://developers.google.com/analytics/devguides/collection/gajs/experiments#cxjs

Тогда все, что вам нужно сделать, это сделать что-то подобное в вашем определении маршрута/состояния.

{
   templateUrl: function() {
      if(cxApi.chooseVariation() == 0) {
         return "version1.html";
      } else {
         return "version2.html";
      }

   }
}
person fxck    schedule 22.11.2013
comment
Привет, как мне настроить эксперимент в Google Analytics? URL-адрес тот же, но шаблоны меняются. Итак, как мне это сделать? - person Tommy; 04.06.2015

Используя AngularJS, вы будете выбирать и предоставлять варианты в своем коде Angular. Google называет это реализацией только в браузере. Таким образом, вы не используете стандартный фрагмент кода эксперимента, предоставляемый веб-интерфейсом Google Analytics. Вместо этого вы будете использовать Content Experiment JavaScript API. Таким образом, скрипт, который вы будете загружать:

<script src="//www.google-analytics.com/cx/api.js?experiment=EXPERIMENT_ID"></script>

Если вы используете ui-router:

Как уже писал foxx, вам просто нужно определить вариант, вызывая cxApi.chooseVariation() каждый раз, когда пользователь подвергается воздействию $state, на котором вы хотите запустить тест. Вы можете либо выбрать разные шаблоны в вызове $stateProvider.state() (как показано foxx), либо вы можете просто разрешить номер варианта и ввести его в контроллер, чтобы использовать классы вариантов в шаблоне: ng-class="{original: isVariation(0), variation-one: isVariation(1)}"

Google предоставляет отличное руководство по реализации экспериментов на стороне клиента.

person Tob    schedule 18.11.2015