
Почему страница на русском?
Этот блог начинался давно, когда писать материалы на английском языке для меня было сложно, и для достижения большей аудитории он велся на русском. Но с началом полномасштабного вторжения в феврале 2022 года я решил прекратить писать на этом языке. Моя страна переживает тяжелые времена, но мы с верой смотрим в будущее, и я больше не хочу поддерживать использование русского языка для новых материалов. Те статьи, что уже есть, остаются на сайте как часть истории блога, напоминая о предыдущих этапах его развития.Як і Україна, цей блог продовжує активно зростати та зміцнюватись без використання російської мови, незважаючи на всі випробування, і впевнено рухається до майбутнього 💙💛
вс, 19 мая 2019 г.
Одна из главных проблем маркетологов и веб-аналитиков - большое количество параллельно открытых вкладок в браузерах пользователей.

Именно они и не позволяют посетителям сконцентрироваться только на нашем контенте. Поэтому, маркетологи придумывают различные “уловки”, чтобы удерживать внимание пользователей. Еще большей проблемой это является для аналитика: при таком количестве вкладок нельзя быть уверенным, что пользователь все время от начала загрузки до определенного момента провел на странице.
В итоге могут возникать абсурдные ситуации:

Подобные примеры можно приводить бесконечно, но лучше показать решение. Как видите, обычный триггер таймера в Google Tag Manager уже не кажется таким прекрасным, поэтому давайте напишем свой.
В этом решении будем использовать Page Visibility API с помощью которого мы можем отследить активна вкладка на данный момент или нет. В моменты активной вкладки таймер работает, в противном случае таймер ставится на паузу. Спасибо Eugen Hardysh, который помог написать этот код.
<script>
 (function($) {
   $.fixTime = function() {
     var dateObj = new Date();
     return Math.floor(dateObj.getTime() / 1000);
   }
 })(jQuery);
 function onVisibilityChange() {
   var current_timestamp;
   if (document.visibilityState === "hidden") {
     invisibility_time = jQuery.fixTime();
   } else {
     current_timestamp = jQuery.fixTime();
     window_invisibility_time += (current_timestamp - invisibility_time);
   }
 }
 //Осуществляем вызов вышеописанных функций и передаем данные в GTM
 jQuery(document).ready(function() {
   /* Через сколько секунд после загрузки окна отправлять данные в dataLayer? */
   TIME_WHEN_SEND_DATA = 30;
   // дальше тело скрипта
   invisibility_time = 0;
   window_invisibility_time = 0;
   document.addEventListener('visibilitychange', onVisibilityChange, false);
   if (document.visibilityState === "visible") {
     if (typeof dataLayer === 'undefined') {
       console.log('dataLayer НЕ ОПРЕДЕЛЁН!!!');
     } else {
       var startLiveDoc = jQuery.fixTime();
       var check_time = function() {
         if (document.visibilityState === "visible" && jQuery.fixTime() - startLiveDoc - window_invisibility_time === TIME_WHEN_SEND_DATA) {
           dataLayer.push({
             'event': 'active_time_' + TIME_WHEN_SEND_DATA
           });
         } else {
           setTimeout(check_time, 1000);
         }
       };
       check_time();
     }
   }
 });
</script>Вам всего лишь нужно изменить значение переменной TIME_WHEN_SEND_DATA. Время необходимо указать в секундах. Давайте настроим это. Нам понадобится тег типа Пользовательский HTML, в который мы поместим наш скрипт и триггер пользовательского события.

Для тега со скриптом будем использовать триггер All Pages. Так как мы с вами делаем таймер, его не обязательно запускать сразу при загрузке страницы. При необходимости вы можете использовать и другие триггеры.
Обратите внимание на название пользовательского события: в конце в нем всегда будет подставляться значение таймера в секундах, например, в нашем случае 30.

Можете также изменить информацию, которая передается в dataLayer, чтобы хранить время таймера в отдельной переменной. Например, так:
dataLayer.push({
        'event': 'active_time',
        'time': TIME_WHEN_SEND_DATA
});Конечно, такое решение не позволит отследить посетителей, которые открыли вкладку и пошли делать себе кофе, но оно в любом случае сделает ваши данные более точными.
Вы также можете узнать, как с помощью данного решения можно улучшить измерение показателя отказов на вашем сайте.