Google 分析、出站事件跟踪

Google Analytics, Outbound Event Tracking

在我的 google 分析中记录出站 link 事件时遇到问题。这是一个如此简单的任务,我不明白它会在哪里出错。任何人都可以注意到我的代码有任何问题吗? google 函数正在我的 onclick 事件上执行,问题是我的 google 分析仪表板上没有记录任何事件在行为 > 事件 > 概述

google_analytics.php

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-86854644-1', 'auto');
  ga('send', 'pageview');


 var trackOutboundLink = function(url) {
  alert(url);
     ga('send', 'event', 'outbound', 'click', url, {
       'transport': 'beacon',
       'hitCallback': function(){document.location = url;}
     });
}



function handleOutboundLinkClicks(event) {

  ga('send', 'event', {
    eventCategory: 'Outbound Link',
    eventAction: 'click',
    eventLabel: event,
    transport: 'beacon'
  });
}

</script>

点击事件

onclick=\"handleOutboundLinkClicks(this);\"

header.php

include_once("/includes/google_analytics.php");

您可以将 event 作为参数发送,但它不是 this。没有 '$hreflink' 这样的东西。避免使用 onclick! (见下文。)

当您发送 this 时,您发送的是元素本身(在您的例子中是 <a> 元素)。所以在你的情况下,我会做类似 this JSFiddle:

的事情
theAnchor.addEventListener('click', function (event) {
    // avoid browser from following the href
    event.preventDefault();

    // call google analytics, and on hitCallback, follow the url:
    document.location = this.href; // `this` is the own element
});

避免使用 onclick 属性!

不要混用 HTML 和 JavaScript;不要使用 onclick 属性(和类似属性)。它们不利于事件管理,并且随着应用程序的增长,它们变得更加难以维护。

就是说,使用 EventTarget.addEventListener 向元素添加事件(如上例所示)。

感谢您的帮助,我同意事件侦听器是一种更好的方法,尤其是对于多个事件,但我的初始功能和点击事件有效,结果 google 分析只是花了一些时间来呈现它我的仪表板。 谢谢