Аналитика Facebook Javascript Проблема: «FB не определен» - PullRequest
1 голос
/ 20 декабря 2011

Я хочу отслеживать статус лайков в Facebook в Google Analytics, но у меня возникают проблемы.

Следующий код, скопированный из документации по Google Analytics здесь , не работает для меня.

FB.Event.subscribe('edge.create', function(targetUrl) {
  _gaq.push(['_trackSocial', 'facebook', 'like', targetUrl]);

});

Я поместил этот фрагмент кода в нижний колонтитул своего сайта, но в сообщении об ошибке говорится: «FB не определен», проверено с помощью Firebug.Так как на моем сайте есть фейсбук-бокс с кнопкой «Мне нравится», я подумал, что код, связанный с FB, будет загружен, а не неопределен.Вот почему это не сработает?Что мне нужно сделать, чтобы начать отслеживать кнопку «Мне нравится» в моем фейсбук-боксе в Analtycs?

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Вам необходимо правильно включить 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>
0 голосов
/ 12 декабря 2012

Если вы, как и я, добавляете код отслеживания программным способом (например, у вас есть 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]);
             });
         };
 });

Отслеживание лайков в Facebook с помощью Google Analytics, реальное решение!

...