【问题标题】:Google Analytics; Track outbound clicks; How?谷歌分析;跟踪出站点击;如何?
【发布时间】:2010-10-31 19:42:45
【问题描述】:

我阅读了这篇关于跟踪横幅等上的出站链接的文章:

http://seogadget.co.uk/how-to-count-your-outbound-click-stats-with-onclick-in-google-analytics/

所以我将此代码添加到我的 href 的 onClick 事件中:

 javascript: pageTracker._trackPageview('/outbound/top_banners/banner_name');

这就够了吗?

因为我已经阅读了一些地方,所以在执行任何 javascript 之前,我还需要在我的文档的 HEAD 中添加“链接延迟”功能或其他内容!

另外,我可以在 GA 中的哪个位置(在界面中)查看点击次数?

谢谢

【问题讨论】:

    标签: javascript html google-analytics


    【解决方案1】:

    问题出在:由 Google Analytics 记录和报告的每一项数据都会在客户端对 __utm.gif 的请求的请求 URL 组件中发送到 GA 服务器。 _.trackPageview() 函数将数据收集/连接到请求 URL 以及请求本身。换言之,如果不调用 _trackPageview(),则不会向 GA 服务器发送任何数据。

    所以问题是 GA 请求(上)是否在与出站链接关联的请求之前处理。如果不是,那么出站链接的点击没有被GA记录,这不是你想要的。

    所以你想要的是延迟,只是稍微长一点——足以让 GA 请求发生,但又足够短,以至于用户不会注意到延迟——出站链接请求。

    在您的 Q 中发布的代码与下面的代码之间存在一些差异——所有差异都指向这个“竞争条件”。

    首先,请注意 onClick 处理程序的 返回值 设置为“false”——阻止客户端浏览器(立即)导航到 http://www.outbound-link.com

    第二个差异是对 setTimeout 的调用。传入的第三个参数“100”是延迟的毫秒数。

    第三,onclick 处理程序 (fnx) 创建自己的跟踪对象,因此不依赖已在其他地方初始化的 pageTracker 对象。

    您的第二个问题是,您在 GA 浏览器的哪个位置查看这些点击?使用 GA,您可以通过两种不同的方式跟踪事件——使用 _trackEvent() 或 _trackPageView()。 p>

    通过以第二种方式跟踪出站链接(正如您所做的,因此正如我在下面所做的那样),“点击”不是作为事件显示,而是作为 pageview('virtual pageview ' 是 GA Consultants 等人最常使用的术语,表示被跟踪为页面查看但实际上并非如此的内容)。因此,您会看到这些点击次数与其他页面浏览量一起报告,即在内容中(以及流量访问者 em>,左侧面板中的三个主要标题)。您如何判断该报告中的哪些行引用了这些出站点击? 页面字段(通常是最左边的列标题)的值将是出站链接的 url。一旦您知道这一点,您当然可以创建一个高级细分自定义报告,甚至是一个新的配置文件,分别报告这些。

    <script type="text/javascript">
        function fnx(that) {
            try {
                var pageTracker=_gat._getTracker("UA-YOURACCOUNTHERE-PROFILE");
                pageTracker._trackPageview("http://www.outbound_link.com");
                setTimeout('document.location = "' + that.href + '"', 100)
         }catch(err){}
        }
    </script>
    
    
    <a href="www.outbound_link.com" onclick='fnx(this);return false;'>"Take Me Here"</a>
    

    【讨论】:

    • 感谢道格的好回答。所以我实际上不需要事件跟踪?我是否理解正确,有两种跟踪方式,一种是您的示例,一种是“事件”。对吗?
    • 没错——这两种方式通常在博客文章等中被称为“事件跟踪”和“虚拟浏览量”。现在编辑我的问题以强调这一点。
    • 还有一个问题:如果我设置了一个“高级细分”,其中仅包含我需要的网页浏览量(出站点击),那么这些网页浏览量是否会从总浏览量中减去?即,如果“www.link.com”有 1000 次浏览量,并且在我设置细分之前总共有 10,000 次浏览量,那么我创建的细分中是否会有 1000 次浏览量,而“所有访问”中仍然有 10,000 次浏览量“?我的问题是我想,我怎样才能将这些完全分开,这样数据才不会混合?
    • 没有 THOSE 浏览量没有被减去。清理浏览量统计的一种方法是“标记”这些浏览量,以便在配置文件级别轻松过滤它们。 _trackPageview() 函数采用单个参数(其默认值等于请求 URL,但您可以通过传入任何字符串来选择退出默认值 - 例如,'CV' - 只是一些特殊的名称过滤更容易。
    【解决方案2】:

    这是我用于跟踪所有出站链接的 100% 有效的解决方案(我喜欢 jQuery,因此您需要将 jquery.js 脚本添加到页面)。

    function isLinkExternal(link) {
        var r = new RegExp('^https?://(?:www.)?' + location.host.replace(/^www./, ''));
            return !r.test(link);
    }
    
    $(document).ready(function() {
        $(document).bind('click', function(e) {
            var target = (window.event) ? e.srcElement : e.target;
            while (target) {
                if (target.href) break;
                target = target.parentNode;
            }
            if (!target || !isLinkExternal(target.href)) return true;
            var link = target.href;
            link = '/outgoing/' + link.replace(/:\/\//, '/');
            _gaq.push(['_trackPageview', link]);
        });
    });
    
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-YOURCODE-1']);
    _gaq.push(['_trackPageview']);
    (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();
    

    此脚本提供所有到 GA 的出站链接,例如:/outgoing/http/www.example.com。 为了获得更好的体验,您需要为此链接创建高级细分。使用参数创建它:“页面”“开始于”“/outgoing/http”。 就这样!现在您有了出站链接的完整统计信息。

    【讨论】:

      【解决方案3】:

      此解决方案将允许您单击带有target='_blank' 的链接,此外,还允许您在任何链接上设置数据属性并将这些属性自动发送到 GA。

      $('a').bind('click', function( event ) {
        var target = $(this).attr('href');
        if ($(this).attr("data-event-category") !== undefined && $(this).attr("data-event-label") !== undefined) {
          gtag('event', 'click', {
            'event_category': $(this).attr("data-event-category"),
            'event_label': $(this).attr("data-event-label"),
            'event_callback': function(){handle_redirect($(this), event);}
          });
        } else {
          handle_redirect($(this), event);
        }
      });
      
      function handle_redirect(element, event) {
        var target = element.attr('href');
        var regExp = new RegExp("//" + location.host + "($|/)");
        var isLocal = (target.substring(0,4) === "http") ? regExp.test(target) : true;
        var url = target;
        if(isLocal===true) {
          return;
        } else {
          event.preventDefault();
          gtag('event', 'click', {
            'event_category': 'outbound',
            'event_label': window.location.href + ' --> ' + url,
            'transport_type': 'beacon',
            'event_callback': function(){element.unbind( "click"); element[0].click();}
          });
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-29
        • 1970-01-01
        • 2015-11-19
        • 1970-01-01
        相关资源
        最近更新 更多