Установка счетчика на AJAX-, SPA-, Flash-сайтах

Для корректной работы счетчика на AJAX-, SPA-, Flash-сайтах необходимо выполнить следующие шаги:

  1. Получить и установить код счетчика на сайт, как описано в других статьях помощи.
  2. Определить случаи и события, которые необходимо рассматривать как отдельный просмотр страницы или достижение цели.
  3. Так же необходимо определить url и referrer для этого просмотра. По умолчанию будут использованы текущие url из location.href и referrer из document.referrer.
  4. Вставить дополнительный код в те места кода, где инициируется новый просмотр страницы. Для этого необходимо вызвать метод pageView или reachGoal для объекта _tmr для отправки нового просмотра страницы или достидение цели, соответственно.

Вызов метода для AJAX-сайтов (нужно взять только один  вариант в зависимости от отправки url и referrer):

_tmr.pageView({ id: "ID счетчика" });
// ИЛИ с url
_tmr.pageView({ id: "ID счетчика", url: "URL" });
// ИЛИ с url и referrer
_tmr.pageView({ id: "ID счетчика", url: "URL", referrer: "REFERRER" });

Если вы не уверены, что на момент вызова этого кода счетчик уже вставлен на странице и загружен, можно использовать более безопасный вариант отправки хита просмотра страницы:

var _tmr = window._tmr || (window._tmr = []);
_tmr.push({ id: "36383", type: "pageView", url: "URL" });

Для SPA-сайтов чаще всего существует метод в который нужно вставить код аналогичный коду для AJAX-сайтов. Например, в AngularJS можно использовать обработчики $viewContentLoaded или $routeChangeSuccess

function MyCtrl($scope, $location, $window) {
  $scope.$on('$viewContentLoaded', function(event) {
    $window._tmr.push({id:"ID счетчика", type: "pageview", url: $location.url() });
  });
}
// ИЛИ
app.run(function ($rootScope, $location) {
    $rootScope.$on('$routeChangeSuccess', function(){
        _tmr.push({id:"ID счетчика", type: "pageview", url: $location.url() });
    });
});

Если вы используете GTM для вставки кода, и ваш AJAX-, SPA-сайт меняет урл страницы при новом просмотре, то вместо вставки вышеописанного кода вы можете для контейнера помимо триггера "Просмотр страницы" указать триггер "Изменение в истории".

Вызов метода для Flash-сайтов на ActionScript 2 (версия Flash меньше 9.0):

getURL("javascript:_tmr.pageView({id: \"ID счетчика\", url: \"URL\" })");

Вызов метода для Flash-сайтов на ActionScript 3 (версия Flash 9.0 и выше):

navigateToURL(new URLRequest("javascript:_tmr.pageView({id: \"ID счетчика\", url: \"URL\" })"), "_self");