【问题标题】:Google Analytics file tracking谷歌分析文件跟踪
【发布时间】:2014-04-06 06:52:29
【问题描述】:

我正在使用 Google Analytics 来跟踪我的页面,上周我添加了这段代码,我发现它试图跟踪我的 PDF 下载,但这不起作用:

链接到 PDF:

<a href="pdf/my-pdf.pdf"
    onClick="javascript:pageTracker._trackEvent('PDF','Download','My New PDF');
    void(0);">
        PDF
</a>

GA 跟踪代码(缩小版):

var _gaq=[['_setAccount','UA-XXXXXXXX-XX'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script')); 

当然,我为这篇文章更改了我的 UA 值。

如何编辑它以允许文件下载跟踪?


编辑

<a href="pdf/my-pdf.pdf" target="_blank" onclick="trackLink(event);">PDF</a>

function trackLink(e)
{
    e.preventDefault();
    _gaq.push(['_trackEvent','Download','PDF', e.target.href]); 
    window.setTimeout('location.href="'+e.target.href+'"',100); 
    return false;
}

var _gaq=[['_setAccount','UA-XXXXXXXX-XX'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script')); 

注意:XX 是为发帖目的而添加的,不在实际代码中。

【问题讨论】:

    标签: google-analytics


    【解决方案1】:

    好的,这里有几件事。首先,正如 gerl 所指出的,您对您拥有的核心代码版本使用了错误的 GA 语法。因此,无论如何,您都需要根据该答案修复代码。但还有一个问题需要考虑:时间。

    首先,在浏览器重定向到目标 URL 之前,GA 代码通常没有足够的时间执行。有两种方法可以解决这个问题:在重定向之前强制超时约 100 毫秒,或者让您的 pdf 在单独的选项卡/窗口中打开。

    我个人认为后者是更好的解决方案。由于 pdf 被加载到单独的窗口中,因此您无需担心延迟重定向以使 GA 有机会执行。此外,大多数人更喜欢在单独的选项卡/窗口中打开诸如 pdf 之类的内容,这样它们就不会离开他们所在的页面。为此,请在链接中添加 `target='_blank':

    <a href="pdf/my-pdf.pdf" onclick="_gaq.push(['_trackEvent','Download','PDF', 'pdf/my-pdf.pdf']);" target="_blank">PDF</a>
    

    但是,如果您真的想坚持在同一个窗口/选项卡中打开 pdf,那么您将需要强制超时。我不像第一个那样喜欢这个选项,因为~100ms通常是足够的等待时间,这并不能保证它有足够的时间。您可以增加超时时间,但是您做的越多,访问者在重定向发生之前必须等待的时间越长,这会导致糟糕的用户体验。但这是您可以做到的一种方式:

    <a href="pdf/my-pdf.pdf" onclick="trackLink(event);">PDF</a>
    
    <script type="text/javascript">
      function trackLink(e) {
        e.preventDefault();
        _gaq.push(['_trackEvent','Download','PDF', e.target.href]); 
        window.setTimeout('location.href="'+e.target.href+'"',100); 
        return false;
      }
    
    var _gaq=[['_setAccount','UA-XXXXXXXX-XX'],['_trackPageview']];
    (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
    g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
    s.parentNode.insertBefore(g,s)}(document,'script')); 
    </script>
    

    另外请注意,如果您upgrade to universal analytics,该版本在link tracking 中内置了超时/回调功能(该文章讨论了出站链接跟踪,但使用回调函数进行重定向的原理是相同的)。

    【讨论】:

    • 非常简洁详细的答案;但是,当我尝试添加您的代码时,什么都没有发生,因为 javascript 函数阻止了任何操作。
    • @PubliDesign 好的,我实际上在我的示例中添加了我自己的页面代码(我将其更改为显示您的)。它对我来说很好......我唯一的猜测是你没有正确应用它
    • 好吧,等今天的统计数据都出来了,我明天再看看
    • @PubliDesign 您是否使用浏览器插件来查看是否在点击时发出 GA 请求?例如。用于 IE 或 chrome 的 firebug 或开发工具?或者像查尔斯代理这样的独立数据包嗅探器?如果不是,请使用一个来查看是否看到请求触发。如果不是,那么您肯定不会在报告中看到数据。如果您看到 ping,那么……您的帐户 ID 正确吗?我看到你的代码中有很多 XX。我假设这是为了发布,但你永远不知道。是否有任何过滤器可能会阻止它?
    • 我最初在 Firebug 的控制台中没有得到任何东西。在进行最新的 Firefox 更新后,它现在确实显示网络错误,我现在被重定向到我的 404 页面。是的,GA 已被通用 XX 取代。除了更改 XX 值之外,我与您的代码没有什么不同,所以我看不出哪里出了问题。请查看帖子编辑。
    【解决方案2】:

    你有 pageTracker 而不是 _gaq.. 试试这个:

    onclick="_gaq.push(['_trackEvent','Download','PDF', 'pdf/my-pdf.pdf']);"
    

    【讨论】:

    • 对不起,这似乎没有出现在我的任何统计数据中。我想知道,您认为链接到 my-pdf.php 并使用 header(location: the-proper-pdf.pdf) 重定向到我的 PDF 会是“错误的”吗?
    • 我编辑了我的解决方案以添加您的文件名。但是您的替代解决方案也可能有效。这只是你的额外工作..
    【解决方案3】:

    您可以在元素的 html 中添加一些内容,而不是编写函数……也许是这样的?

    <a href="pdf/my-pdf.pdf" onClick="_gaq.push(['_trackEvent', 'PDF','Download','My New PDF']);">
    

    应该这样做。

    在尝试决定使用哪种类型的 GA 代码时,我遇到了类似的问题。

    我发布的这个问题可能会有所帮助(使用 ga 与 _gaq.push):

    ga or _gaq.push for Google Analytics event tracking?

    【讨论】:

      【解决方案4】:
      <a href="pdf/my-pdf.pdf" onClick="_gaq.push(['_trackEvent', 'pdf', 'download', 'My New PDF']);">pdf</a>
      

      这应该可以完成工作!更多信息在这里:https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide

      此外,您始终可以通过查看实时分析来测试您的事件跟踪是否有效。

      【讨论】:

        【解决方案5】:

        查看此链接:https://support.google.com/analytics/answer/1136920?hl=en

        它展示了如何使用 hitCallback 在事件被推送之前帮助解决浏览器重定向问题。

        我认为这将是如何修改您的代码:

        <a href="pdf/my-pdf.pdf" onclick="trackLink(event);">PDF</a>
        
        <script type="text/javascript">
            function trackLink(e) {
                e.preventDefault();
                ga('send', 'event', 'Download', 'click', 'PDF', {'hitCallback':
                    function () {
                        document.location = e.target.href;
                    }
                }); 
                return false;
            }
        
            (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', '//www.google-analytics.com/analytics.js', 'ga');
            ga('create', 'UA-XXXXXXXX-X', 'auto');
            ga('send', 'pageview');
        </script>
        

        【讨论】:

          猜你喜欢
          • 2013-09-18
          • 2016-05-21
          • 1970-01-01
          • 1970-01-01
          • 2014-02-15
          • 2013-08-21
          • 1970-01-01
          相关资源
          最近更新 更多