Отслеживание Оптимизация тайм-аута антибликового фрагмента с помощью Google Analytics

Как успешно обнаружить и отследить тайм-аут сниппета Optimize Anti-Flicker с помощью Google Analytics?

Я заметил, что переменная dataLayer hide["GTM-XXXXXX"] равна true, когда истекает время ожидания, и false, если нет.

Проблема в том, что нет события, привязанного к изменению этой переменной. Как бы вы отслеживали тайм-ауты?

Моя цель — отправлять событие в Google Analytics каждый раз, когда истекает время ожидания фрагмента.


person Silver Ringvee    schedule 03.09.2019    source источник


Ответы (2)


Я не использовал это решение на практике, но вы можете попробовать.

Если вы посмотрите руководство Google Optimize для разработчиков, вы найдете очень подробное объяснение функций кода защиты от мерцания (фрагмент, скрывающий страницу). Соответствующий код и комментарий следующие:

// Creates a timeout that will call the page-showing function after the
// timeout amount (defaulting to 4 seconds), in the event that Optimize has
// not already loaded. This ensures your page will not stay hidden in the
// event that Optimize takes too long to load.
  setTimeout(function() {
    i();
    h.end = null
  }, c);
  h.timeout = c;

В этот таймаут i() отвечает за удаление класса, скрывающего страницу по умолчанию.

Таким образом, теоретически вы можете изменить эту часть кода и привязать к ней отслеживание событий, сгенерировав событие GTM через файл dataLayer. Например.

setTimeout(function() {
  i();
  h.end = null;

  //added code: notify Google Tag Manager about the timeout
  dataLayer.push({
    event: 'trackAntiFlickerTimeout'
  });

}, c);

Очевидно, вам нужно использовать это событие в качестве триггера, и сделать так, чтобы необходимый тег события срабатывал, и отправлять данные в Google Analytics.

person kgrg    schedule 03.09.2019

Это решение, с которым я столкнулся. Работает отлично.

<сильный>1. Создайте новую пользовательскую переменную функции Javascript в GTM

function () { 
    if ( window.dataLayer.hide ) { 
        return window.dataLayer.hide["GTM-xxxxxxx"]; // Your Optimize container ID
    } 
}

<сильный>2. Если DOM Ready, проверьте его значение

Если значение равно true, время ожидания фрагмента истекло. И когда это false, ему удалось запуститься до вашего максимального времени ожидания.

Более подробное руководство можно найти здесь

person Silver Ringvee    schedule 05.09.2019
comment
Привет, я получаю (не установленные) значения вместо ложных. Есть идеи, почему? - person Adrian; 17.11.2020