我想在Google Analytics中跟踪Facebook喜欢和不喜欢的状态但是我遇到了问题。
从Google Analytics文档here复制的以下代码对我不起作用。
FB.Event.subscribe('edge.create', function(targetUrl) {
_gaq.push(['_trackSocial', 'facebook', 'like', targetUrl]);
});
我已将该代码段放在我的网站页脚中,但错误消息显示:“FB未定义”,使用Firebug进行检查。由于我的网站上有一个包含类似按钮的facebook-box,我认为FB相关代码将被加载而不是未定义。
我拥有的facebook-box是iframed。这就是为什么它不会工作?在Analtycs的facebook框中开始跟踪喜欢按钮我需要做什么?
答案 0 :(得分:2)
您需要正确包含FB JS SDK;你展示的只是期望这种整合已经完成的部分。是的,我认为您所描述的iframe
集成将不会以您找到的示例的方式工作。
请参阅https://developers.facebook.com/docs/reference/javascript/如何集成JS。鉴于上面的示例以及我提供给您的链接,我会说你将这个放在FB示例所说的其他初始化代码:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR_APP_ID', // App ID
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional initialization code here
FB.Event.subscribe('edge.create', function(targetUrl) {
_gaq.push(['_trackSocial', 'facebook', 'like', targetUrl]);
});
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
答案 1 :(得分:0)
如果像我这样以编程方式添加跟踪代码(例如,您在导出页面上的母版页和类似按钮中有GATC),则可以使用以下代码:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function()
{
// init the FB JS SDK
FB.init(
{
appId : 'YOUR_APP_ID',
channelUrl : '//WWW.YOUR_DOMAIN.COM',
status : true,
cookie : true,
xfbml : true
});
// Add event subscripion here
FB.Event.subscribe('edge.create', function (targetUrl)
{
_gaq.push(['_trackSocial','facebook', 'like', targetUrl]);
});
};
// Load the SDK's source Asynchronously
(function(d)
{
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
如果要以编程方式添加事件处理程序,正确的解决方案是使用window.fbAsyncInit事件将类似事件订阅附加到Facebook SDK初始化。 在下面的代码中,我使用jQuery在DOM初始化之后附加事件订阅。
$(function ()
{
var exsistingFbAsyncInit = window.fbAsyncInit;
if (exsistingFbAsyncInit != null)
window.fbAsyncInit = function ()
{
exsistingFbAsyncInit();
FB.Event.subscribe('edge.create', function (targetUrl)
{
_gaq.push(['_trackSocial','facebook', 'like', targetUrl]);
});
};
});
Tracking Facebook likes with Google Analytics, the real solution!