Событие запуска GTM перед действием страницы, как?

#javascript #google-tag-manager

#javascript #google-tag-manager

Вопрос:

У меня есть простая страница, которая в URLhttps://www.myshop.com/user/quickact, и html выглядит как :

 <input id="pid" />Keyin Product ID
<input id="count" />Keyin product count
<a id="addList" href="javascript:void(0);" class="buttonAction">Add to List</a>
<!--some external js file handle click event for this link-->
  

Когда пользователь нажимает гипертекст [Добавить в список], моя страница будет :

  1. Получаем значение pid / count, помещаем в массив javascript.
  2. Сбросьте pid с помощью «, сбросьте количество с помощью 1′.

То, что я сейчас делаю в GTM, это :

  1. Когда pageUrl содержит «user / quickact»
  2. И пользователь нажал ссылку с идентификатором «Добавить список»
  3. Получаем значение pid / count и отправляем их в GA через тег GTM.

Вот как я читаю их в пользовательской переменной GTM

 function()
{
  var pid=document.getElementById('pid').value;
  var count=document.getElementById('count').value;
  return pid ',' count;
}
  

Моя проблема в том, что событие GA было запущено, но value…my пользовательская переменная всегда возвращает ‘, 1’.

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

Может ли кто-нибудь предложить решить это?

Ответ №1:

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

Вы могли бы сделать что-то вроде этого:

 function yourFunctionForButtonClick() {

  //Your code to get pid/count value, put into a javascript array.

  //new code to provide data to GTM
  dataLayer.push({
    event: 'newPidProvided',
    pidcountvalue: pid   ','   count
  }); 

  //Your code to reset pid with '', reset count with 1'.

}
  

В этом случае вам нужно настроить триггер GTM для прослушивания события newPidProvided вместо кликов, при этом все еще проверяя, присутствует ли «user / quickact» в URL. (Что также может быть выполнено в функции, если ни один другой тег или триггер не использует pid count в GTM на других страницах.) Вам также придется использовать переменную dataLayer вместо пользовательского типа JavaScript.