Google Universal Analytics — отслеживание событий — setTimeout не работает с использованием метода fieldsObject

Я не понимаю, почему это работает;

ga('send', 'pageview'); 
setTimeout("ga('send','event','Engagement','SessionPing','30s')", 30000);

И это не работает

ga('send', 'pageview'); 
setTimeout("ga('send',{
  hitType: 'event',
  eventCategory: 'Engagement',
  eventAction: 'SessionPing',
  eventLabel: '30s'
})", 30000);

Кто-нибудь может объяснить, почему один работает, а другой нет? Второй метод, по-видимому, предотвращает полное срабатывание GA, и я не записывал данные в течение нескольких дней - сообщение об ошибке, отображаемое Google Chrome Tag Assistant, заключается в том, что файл javascript не загружен.

Я хотел бы знать, потому что хочу лучше понять GA и javascript - для меня это не имеет смысла, я не вижу ошибок синтаксиса или формата во втором методе.


person ericTbear    schedule 14.07.2016    source источник
comment
У меня работает нормально.   -  person Eike Pierstorff    schedule 14.07.2016
comment
Real Time в GA перестает работать, и это ошибка в Tag Assistant d.pr/i/iDR0+   -  person ericTbear    schedule 14.07.2016


Ответы (1)


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

Если вы хотите, чтобы это была строка, она должна быть:

 setTimeout("ga('send','event','Engagement','SessionPing','30s')", 30000);

или если вы хотите разделить на несколько строк (соблюдайте двойные кавычки)

setTimeout("ga('spaTracker.send', {" +
          "hitType: 'event', " +
          "eventCategory: 'Engagement', " +
          "eventAction: 'SessionPing', " +
          "eventLabel: '30s'" +
          "})", 30000);

Вы также можете разделить его следующим образом:

setTimeout("ga('spaTracker.send', { \
          hitType: 'event', \
          eventCategory: 'Engagement', \
          eventAction: 'SessionPing', \
          eventLabel: '30s' \
      })", 5000);

Если вы хотите сохранить его как функцию, это должно быть либо:

setTimeout(ga('send','event','Engagement','SessionPing','30s'), 30000);

or:

setTimeout(ga('spaTracker.send', {
          hitType: 'event',
          eventCategory: 'Engagement',
          eventAction: 'SessionPing',
          eventLabel: '30s'
      }), 30000);
person Sasank Mukkamala    schedule 14.07.2016
comment
По сути, вы используете строку в качестве первого аргумента setTimeout Спасибо, я знал, что узнаю что-нибудь, если опубликую это здесь. - person ericTbear; 16.07.2016