Google Universal Analytics - 事件跟踪 - setTimeout 无法使用 fieldsObject 方法

Google Universal Analytics - Event Tracking - setTimeout not working using fieldsObject method

我不明白为什么会这样;

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 - 这对我来说毫无意义,我在第二种方法中看不到任何语法或格式错误。

JavaScript 语法错误。基本上,您使用字符串作为 setTimeout 的第一个参数,当您将它分成多行时,您没有正确执行。 setTimeout 的第一个参数是一个函数,可以通过多种方式引用它 here

如果你希望它是一个字符串,那么它应该是:

 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);

或:

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