Search code examples
jqueryfacebookfacebook-social-plugins

How to execute script after a user clicks Like on a Facebook Like button?


I am trying to use a Facebook Like button via an iFrame, like so:

<iframe id="test" src="http://www.facebook.com/plugins/like.php? 
       href=http://yoururl.com/&amp;
       layout=button_count&amp;
       show_faces=false&amp;
       width=50&amp;
       action=like&amp;
       colorscheme=light&amp;
       height=21" 
       scrolling="no" frameborder="0" 
       style="border:none; overflow:hidden; width:50px;  
              height:21px;" 
       allowTransparency="true">

After a user clicks "Like" for the first time, I want to execute some Javascript in my DOM content. How would I go about doing this?


Solution

  • You mean you want to execute some Javascript when you like something?

    You can use the Facebook Javascript SDK for that, especially the edge.create event.
    See

    1. http://developers.facebook.com/docs/reference/javascript/ (for general SDK doc)
    2. http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/ (for event doc)

    This should work with the IFrame-version too. If not, you have to switch to the XFBML-Like button. It definetly works with the XFBML version.

    Example:

    <!-- Load the SDK (or even better, load it asynchronously. See first link above -->
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
    // initalize your Facebook App
      FB.init({
        appId  : 'YOUR APP ID',
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml  : true  // parse XFBML
      });
    // subscribe to the event
    FB.Event.subscribe('edge.create', function(response) {
      alert('you liked this');
    });
    FB.Event.subscribe('edge.remove', function(response) {
      alert('you unliked this');
    });
    </script>
    <!--
        The XFBML Like Button, if the iframe version doesn't work (not 100% sure)
        <fb:like></fb:like>
     -->