Search code examples
javascriptjqueryfacebookfacebook-like

capture click of Facebook 'Like' button with jQuery


I am looking on the Facebook Developers Documentation to locate some sample code that would allow me to capture a click event on the "Like" button. It states:

If you are using the XFBML version of the button, you can subscribe to the 'edge.create' event through FB.Event.subscribe.

I am not using XFBML however, this is my code:

<div class="social_net_button facebook_button">
      <div id="fb-root"></div>
      <script>(function(d, s, id) {
              var js, fjs = d.getElementsByTagName(s)[0];
              if (d.getElementById(id)) {return;}
              js = d.createElement(s); js.id = id;
              js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
              fjs.parentNode.insertBefore(js, fjs);

              FB.Event.subscribe('edge.create',
                     function(response) {
                          alert('You liked the URL: ' + response);
                     }
              );

            }(document, 'script', 'facebook-jssdk'));</script>
      <div class="fb-like" data-href="http://www.facebook.com/pages/Ayrshire-Minis/160330240663397" data-send="false" data-layout="button_count" data-width="70" data-show-faces="false" data-action="recommend"></div>
    </div>

Can a click of the 'Like' button be captured by jQuery?


Solution

  • The solution, it would appear, is sending the request asynchronously. This code below works when placed after my fb-like div class:

         <script>
               window.fbAsyncInit = function() {
                       FB.init({
                                               status: true, // check login status
                                               cookie: true, // enable cookies to allow the server to access the session
                                               xfbml: true  // parse XFBML
                                       });
               };
         </script>
         <script type="text/javascript">
               window.fbAsyncInit = function() {
                 FB.Event.subscribe('edge.create',
                         function(response) {
                               _gaq.push(['_trackSocial', 'facebook', 'like', document.location.href]);
                         }
                 );
               };
         </script>