2015-11-04 108 views
0

这几乎涵盖了原始 FB/Twitter按钮的主题。但是如果我有我自己的“分享fb”按钮呢?就像这样:GA中的社交分享跟踪

<div id="fb_share"><a target="_blank" href="http://www.facebook.com/share.php?u=blah-blah">Share on FB</a></div> 

所以我想出folloing解决方案:

var FBbtn = document.getElementById("fb_share"); 
    FBbtn.addEventListener('click', function() { 
     ga('send', 'social', { 
     'socialNetwork': 'facebook', 
     'socialAction': 'share', 
     'socialTarget': window.location 
    }); 
    //console.log('tracked'); 
}); 

被放置在谷歌Analytics(分析)代码后。 尽管事实上它不会捕捉FB回调 - 它应该做的伎俩,但由于某种原因,我仍然无法在分析中看到任何结果,所以问题是这样的:将解决方案实际工作?事实上,它可能会更喜欢我相信:

<a href="http://www.facebook.com/share.php?u=blah-blah" onClick="ga('send', 'social', 'Facebook','Share',window.location.href);");">FB</a> 
+2

你的链接缺少id,所以FBtn没有定义。不过,你的第二个例子应该可以工作 –

+1

你的第二个例子拼写'href'属性“hre”。确保你没有在你的实际代码中这样做。 –

+0

是的 - 是的...抱歉的家伙 - 这两个(身份证和“href”的正确拼写)当然是存在的。我已更正问题 – Rossitten

回答

2

你的“分享在Facebook”链接导致页面导航(而不是打开一个新窗口/标签)。当此导航发生时,大多数主流浏览器取消当前页面的所有挂起的HTTP请求,然后导航到新页面(fb.com)

在这种情况下,其中一个挂起的HTTP请求将是GA事件跟踪调用因此将永远不会完成并且永远不会被GA服务器接收。

您需要使用的是GA命中回调功能,这基本上取消了本地导航(FB),发送跟踪调用并等待足够的时间完成,然后执行JavaScript重定向到下一页。

你应该read the google docs here

在你的情况你的事件跟踪功能应该与此类似:

var FBbtn = document.getElementById("fb_share"); 
FBbtn.addEventListener('click', function() { 
    ga('send', 'social', { 
    'socialNetwork': 'facebook', 
    'socialAction': 'share', 
    'socialTarget': window.location, 
    'hitCallback': function(){ 
     window.location = this.href; 
    } 
    }); 
    //console.log('tracked'); 
    return false; 
}); 

所以我做了以下修改:

  1. 添加了hitCallback财产到事件跟踪调用。这是一个匿名函数,一旦GA服务器发送了他们对事件跟踪的响应,就会被调用。
  2. 添加了一个'return false'语句,它取消了原生功能,然后依靠hitCallback函数进行导航。
+1

我不确定这是否为真 - Universal Analytics应该(在支持此功能的浏览器上)使用专门设计用于即使页面已卸载的工作的navigator.sendBeacon - 请参阅https://开发人员。 google.com/analytics/devguides/collection/analyticsjs/field-reference#transport(我仅指出这一点 - 仅供参考 - hitCallback将支持尚未实施sendBeacon的旧浏览器,因此在任何情况下都是一个很好的解决方案) 。 –

+1

它是一个很好的观点,但是我见过最近发生在客户端的网站,即使使用Chrome 45+,理论上它应该支持navigator.beacon。这是我将与合作伙伴计划共同讨论的官方身份。 –

+0

非常感谢你们! – Rossitten