首页 文章

使用Google Analytics跟踪外部链接

提问于
浏览
0

我在跟踪外部链接时遇到问题 . 这不是我的解决方案根本不起作用的问题,它只适用于极少数情况 . 就像在Google Analytics中实际跟踪1%的点击次数一样 . 首先,我将超时设置为100毫秒,并认为它可能太短,但即使500没有任何改变 .

任何人都知道这里可能出现什么问题?

<script type="text/javascript">
  (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', 'domain.com');
  ga('send', 'pageview');

</script>

<script type="text/javascript">
function recordOutboundLink(link, category, action) { 
try { 
    ga('send', 'event', 'category', 'action');
} catch(err){}

setTimeout(function() {
document.location.href = link.href;
}, 500);
}

我的链接看起来像这样:

a class =“post”onclick =“recordOutboundLink(this,'Outbound Links','domain.com');” href =“http://www.external.com”rel =“nofollow”>点击这里

在Google Analytics中,我会检查“category = Outbound Links”的目标

提前致谢!

2 回答

  • 0

    您的代码存在一些问题,但您应该使用Universal Analytics内置的 hitCallback 功能:

    HTML:

    <a class="post" onclick="recordOutboundLinks('Outbound Link', this.href); return false;" href="http://www.external.com" rel="nofollow">Click here</a>
    

    JS:

    <script type="text/javascript">
    function recordOutboundLinks(category, link){ 
    try { 
        ga('send', 'event', category, link, {'hitCallback': function() {
            document.location.href = link;
        }});
    } catch(err){}
    }
    </script>
    
  • 1

    看起来问题是你没有阻止链接的默认事件,所以你设置超时是什么并不重要..你的函数被执行但是然后浏览器继续执行链接的默认事件:即遵循href中指定的目标 . 您可以将代码更新为:

    链接(注意使用 event 而不是 this ):

    <a class="post" onclick="recordOutboundLink(event, 'Outbound Links', 'domain.com');" href="http://www.external.com" rel="nofollow">Click here</a>
    

    功能:

    <script type="text/javascript">
    function recordOutboundLink(event, category, action) { 
      try { 
        event.preventDefault(); // prevent default link action
        ga('send', 'event', 'category', 'action');
      } catch(err){}
    
      setTimeout(function() {
        document.location.href = event.target.href;
      }, 200); 
    }
    </script>
    

    根据我的经验,100-200ms的超时应足以让GA代码ping,但你可能不得不稍微玩一下,因为它不能保证 . 或者,您可以编写代码以在ga完成其内容时挂钩,如果您已经在使用类似jQuery的框架,则会更容易 . 但总体而言我同意 Blexy ,您应该切换到提供回调函数的UA(在他的例子中,他通过在onclick中附加 return false 来阻止默认值 .

相关问题