在单个元素上跟踪多个GA事件

时间:2014-11-07 18:38:15

标签: javascript jquery google-analytics

这是一个基本的"问题,但知道有一个更大的技术块。我一直在四处寻找并且找不到类似的问题。

方案: 我有一个表单,它是响应式网站的一部分,它将桌面和移动表单填充作为转换发送到Adwords。

桌面和移动设备的表单相同,因此只有一个"提交"但是,我想知道它是移动表单提交还是桌面表单提交,因此Google Analytics只能跟踪其中一个,对吧?我用" m_form_submit"用于移动和" d_form_submit"用于桌面。

所以我想我的问题是: 有没有办法可以在单个元素上跟踪2个(或更多个)GA事件,而不会让用户同时触发这两个事件?

理想情况:告诉GA我想为移动设备提供事件,为桌面提供 事件吗?

1 个答案:

答案 0 :(得分:2)

您使用" jQuery"标记了此问题所以我假设您正在使用jQuery来监听表单提交,然后将事件发送给GA。

您只需要发送与移动或桌面版相关联的事件,只需在发送前进行简单的条件检查:

$('#myform').one('submit', function(e) {

  // Prevent form from submitting, and then submit once the GA hit succeeds.
  e.preventDefault();

  // Change this to whatever you're using to determine what "mobile" is.
  var mobile = '(max-width: 600px)';

  if (window.matchMedia && window.matchMedia(mobile).matches) {
    // Send mobile event.
    ga('send', {
      hitType: 'event',        
      eventCategory: 'Form Indentifier', 
      eventAction: 'submit',    
      eventLabel: 'mobile label...',
      hitCallback: afterHitSucceeds
    });
  }
  else {
    // Send desktop event.
    ga('send', {
      hitType: 'event',        
      eventCategory: 'Form Indentifier', 
      eventAction: 'submit',    
      eventLabel: 'desktop label...',
      hitCallback: afterHitSucceeds
    });
  }

  // Once the GA hit succeeds, submit the form.
  function afterHitSucceeds() {
    $('#myform').submit();
  }
});

此函数使用window.matchMedia来确定特定媒体查询是否匹配(允许您匹配CSS文件中的@media规则)。

如果传递的媒体匹配,将发送移动事件,如果传递的媒体不匹配(或浏览器不支持),将发送桌面事件。请注意,几乎所有移动浏览器都支持matchMedia,因此回到桌面活动是一种安全的方式。