Угловатый.JS и Google Analytics Content Experiment
Итак, я пытаюсь реализовать контент-эксперимент google analytics на веб-сайте, который выполнен как угловой одностраничный веб-сайт.
Я установил две версии моей домашней страницы, как /
и /?v=2
, вставленные в код google, как указано, в самом верху тега <head>
, и это сработало просто отлично, google отправил 30% трафика на одну и 70% трафика на вторую версию страницы.
Проблема возникла, когда я попытался получить доступ к say /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"; } } }
Используя AngularJS, вы будете выбирать и предоставлять варианты в своем угловом коде. Google называет этот браузер только реализацией. Таким образом, вы не используете стандартный фрагмент кода эксперимента, предоставляемый веб-интерфейсом Google Analytics. Вместо этого вы будете использовать Content Experiment JavaScript API. Итак, скрипт, который вы будете загружать:
<script src="//www.google-analytics.com/cx/api.js?experiment=EXPERIMENT_ID"></script>
Если вы используете ui-маршрутизатор:
Как уже писал Фокс, вы просто должны определить изменение путем вызова
[5]}Google предоставляет отличное руководство по реализации экспериментов на стороне клиента .cxApi.chooseVariation()
каждый раз, когда пользователь подвергается воздействию$state
на котором вы хотите провести тест. Вы можете либо выбрать различные шаблоны в вызове$stateProvider.state()
(как показано Фоксом), либо вы можете просто решить номер вариации и ввести его в контроллер, чтобы использовать классы вариаций в шаблоне:ng-class="{original: isVariation(0), variation-one: isVariation(1)}"