How to trigger Facebook like button from custom button?

I have created a custom Facebook like button.

Custom Like Button

How do make it that when I click the button, it will trigger the like button provided by Facebook like the one below?

Facebook Like Button


According to facebook policy on Social Plugins point 4 states:

"Don’t obscure or cover elements of social plugins."

You can't change the image directly because it's provided by Facebook.


The Facebook button is in an iFrame with a source that is on a different domain, Facebook’s domain, and so you can't change the button as it's protected by the same-origin policy.

Also, Facebook’s policy prohibits changing their buttons and logos when using embedded content from Facebook, like social buttons.

So, you're not suppose to be able to change the FB buttons, and even if you could it would be against the Facebook Terms of Service.

But... if you still want to do it, you can use the native Facebook button and lay your own image on top or below the Facebook button to fake a custom button.

Laying your image on top is only possible if you use CSS3 pointer-events, wich will make your image click-through and the click event will work "through" your image and actually click the Facebook button. This only works in newer browsers that support Pointer Events.

Another option is to lay the image behind the FB button and set the FB button's opacity to zero.

I have used this several times myself, and with a little digging around in the Facebook code you can attach hover events and everything else to make it look like a custom button. You would have to find what elements to set opacity : 0 on.

Have never spent any time trying to figure out how to make the unlike function of the original button work on a custom button, but it's probably possible.

All my attempts to actually trigger the FB button with javascript or jQuery trigger() have failed, but maybe someone else has figured out how to do it?


When you create a html element with fb-like class, facebook javascript SDK convert it with a like button when document loaded. You can make a custom element and trigger click event of like button when user click your custom button.

For example :

<input type="button" id="mycustombutton" value="Like">
<div style="display:none" class="fb-like" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>

jQuery code:

$("#mycustombutton").click(function(){
      $(".fb-like").find("a.connect_widget_like_button").click();
      // You can look elements in facebook like button with firebug or developer tools.
});

Update

Facebook SDK has been creating like button in an iframe and browsers not allowing to intervention to the iframe in the page. I think add event listener to element in iframe does not possible anymore.


This is not allowed for the obvious reason that it would lead to fraud. Imagine if each time you clicked an image on the web you don't know if it's an actual image or if it will result in a like and show up in your FB feed. It would be disastrous.

If you do want to do this legitimately, you will need to create an app and have the user authorise the app when he visits your site. This will open a popup where the user agreed to let the app access his FB account. Once that is done you can then send the like request on behalf of the user via a server-side script. In other words, it's not worth the effort.

If on the other hand you just want to get the like count for a page and display it however you want, you can do so via a request to "http://graph.facebook.com/#{url}" which will return a JSON payload with the number of likes. In jQuery it would be:

$.getJSON("http://graph.facebook.com/#{url}", function(data) { alert(data.shares); });