谷歌分析ga函数hitCallback未触发

时间:2017-10-11 15:33:03

标签: javascript google-analytics

我正在尝试在客户端的Google分析中触发事件。当用户点击指向另一个网站的链接时,需要触发该事件。放在onclick中的函数调用无法在桌面上运行,因为在Javascript运行之前页面已被卸载。为了解决这个问题,我基于this article实现了以下代码:

<script>
  function submitOrderButtion( eventName ){
    var url = 'https://example.com';
    var goToOrderForm = function(){
      console.log( "goToOrderForm" );
      window.location = url;
    };
    //setTimeout( goToOrderForm, 1000 );
    console.log( ga.q );
    console.log( ga.loaded );
    ga('set', 'transport', 'beacon');
    ga('send', 'event', 'order online', 'click', eventName, {
      hitCallback: goToOrderForm
    });
  }
</script>

调用该函数的链接是:

<a href="javascript:" onclick="submitOrderButtion( 'homepage' );" class="btn btn-primary">Order Online!</a>

单击按钮时,ga函数永远不会执行任何操作。

ga.q未定义,ga.loaded为true。我将传输设置为'beacon'进行最后一次尝试,但没有任何区别。除非我取消注释setTimeout(我最终将在它工作时),否则永远不会调用回调,从不记录ga事件,并且检查器中不会显示任何网络请求。

以下是网站Joey's Pizza的链接。有问题的链接是页面中间的大按钮,上面写着“在线订购!”。

谁能告诉我为什么ga功能没有做任何事情?在此先感谢您的帮助!

状态更新: 我还在寻找答案。我得到的答案已被多次尝试(使用各种arg配置,并检查源以确保先前的尝试未被缓存)。我花了将近一天的时间来处理应该是一项简单的任务,而且我没有收到任何错误或任何错误。任何进一步的帮助将非常感谢!谢谢:))

3 个答案:

答案 0 :(得分:0)

检查是否有任何浏览器插件被阻止。以隐身模式打开浏览器。

答案 1 :(得分:0)

我遇到了同样的问题,最终发现我在发送事件之前错过了对 ga('create') 的调用

ga("create", "UA-XXXXX-Y", "auto");
ga("send", "event", {
  eventCategory: "mycategory",
  eventLabel: "mylabel",
  transportType: "beacon",
  eventCallback: () => {
    ...
  },
});

非常令人沮丧的是,如果没有创建跟踪器,对 GA 发送的调用就什么也不做,没有错误、警告或任何有用的东西!

或者,如果像我一样,由于设置了 ga,您在全局范围内拥有 gtag,您可以调用 gtag 全局:

gtag("event", "click", {
  event_category: "mycategory",
  event_label: "mylabel",
  transport_type: "beacon",
  event_callback: () => {
    ...
  },
});

答案 2 :(得分:-1)

将您的回调作为第5个参数传递

https://developers.google.com/analytics/devguides/collection/analyticsjs/sending-hits#hitcallback

所以它应该是这样的。

ga('send', 'event', 'order online', 'click', {
  hitCallback: goToOrderForm
});