Угловатый.JS и Google Analytics Content Experiment


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

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

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

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

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

2 4

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

   }
}

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

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

Если вы используете ui-маршрутизатор:

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

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