Attach a click() event to the FaceBook 'Like' button?

42,434

Solution 1

Facebook API doesn't allows you to subscribe to the like clicking event, but it allows you to subscribe to the like happening event (fired when the like action is completed):

FB.Event.subscribe('edge.create', function(response) {
  // like clicked
});

see here.

Solution 2

You cannot use JavaScript to access elements within an iframe that does not belong to the current URL, as I guess the domain you're using is not facebook.com you won't be able to attach an event to the like button in this way.

Solution 3

Make a PHP (or whatever language you use) script to CURL the source from http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah

Put the source from facebook into your html page, you can then you can do whatever you like in JavaScript/jQuery with the code from Facebook.

Some examples for CURL within PHP - http://www.php.net/manual/en/curl.examples.php

Solution 4

One can detect 'like' and 'unlike' event of facebook like button using edge.create and edge.remove respectively.

Share:
42,434

Related videos on Youtube

DaveDev
Author by

DaveDev

Updated on July 09, 2022

Comments

  • DaveDev
    DaveDev almost 2 years

    I'd like to do something on the page when a user clicks 'Like'.

    I thought something simple like the following would work:

    <script type="text/javascript">
        $(document).ready(function () {
    
            $('.connect_widget_like_button clearfix like_button_no_like').live('click', function () {
                alert('clicked');
            });
        });
    </script>
    

    This is the iFrame that FaceBook supplies to add the Like button to the page:

    <iframe 
        id="FBLike"
        src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah" 
        scrolling="no" 
        frameborder="0" 
        style="border:none; overflow:hidden; width:450px; height:80px;" 
        allowTransparency="true">
    </iframe>
    

    My script attempts to bind a click event to an anchor tag that is loaded into the iFrame when the page loads. It doesn't work though. Is there any way for me to get jQuery to recognise when this is clicked? Thanks

  • Peter Bailey
    Peter Bailey over 13 years
    It's also most likely to be against their TOS/policy.
  • Denis
    Denis over 13 years
    I have serious doubts what something like that would work. It would make like button spamable and Facebook can not allow that.
  • Damon Skelhorn
    Damon Skelhorn over 13 years
    No idea what their TOS are, obviously you would need to check. @denis , curling the URL will produce the same result as viewing the page directly or as is displayed in an iframe.
  • SteMa
    SteMa over 13 years
    but this cannot be done in a tab, right? any other solutions like at facebook.com/901Tequila?v=ap4904458780 , where clicking on the like button redirects you to the pin wall?
  • Admin
    Admin over 12 years
    I was not aware of the edge.remove event. Do you have a link?
  • AndrewF
    AndrewF over 11 years
    This will never work. FB social plugins like the Like button must be used in an iframe. This is by design for security. The social plugins allow for actions that use facebook.com session cookies, and because they are cross-domain iframes, the container page can't interact (or interfere) with them via JavaScript. The exception to this is by using controls that have been exposed by cross-domain communication code on the document inside the iframe (the facebook.com page containing the Like button). You can use FB.Event.subscribe('edge.create', ...) in that way.
  • vsync
    vsync about 11 years
    This answer is only good when using their bloated SDK, and most people just use the iframe solution.
  • Straw Hat
    Straw Hat over 9 years
    can we get unlike event also .. I tried this and it gives response only when we like,,
  • Ionut Tatu
    Ionut Tatu almost 9 years
    @StrawHat late answer but hope it will help others. Use edge.remove for unlike event.
  • Frostbourn
    Frostbourn almost 6 years
    edge.create and edge.remove JS SDK Events are deprecated. Is there any alternative to that @serg?
  • mooga
    mooga about 5 years
    it would be nice if you add some explaination