Now go build that social analytics dashboard you’ve been planning! Drop a comment below – I’ll cover those next.
<div class="fb-like" data-href="https://your-website.com/article" data-width="" data-layout="button_count" data-action="like" data-size="small" data-share="false"></div> Now, add this JavaScript (with jQuery): jquery detect click facebook like button
Social media integrations are great, but debugging them can be a nightmare. One of the most common questions I see is: "How can I run custom code when a user clicks the Facebook Like button?" Now go build that social analytics dashboard you’ve
// This will NOT work $('#facebook-like-button').on('click', function() alert('Liked!'); ); The Like button resides in a cross-origin iframe. jQuery cannot see inside it for security reasons. Facebook provides its own event system. When someone clicks "Like" (Facebook calls this creating an "edge"), the SDK fires an event you can listen for. Step 1: Load the Facebook JavaScript SDK Make sure the SDK is loaded on your page. One of the most common questions I see
<div id="fb-root"></div> <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v18.0"> </script> Use the XFBML version, not the iframe version.
$(document).ready(function() // Listen for the 'edge.create' event window.fbAsyncInit = function() FB.Event.subscribe('edge.create', function(href, widget) // href = the URL that was liked console.log('User liked: ' + href); // Your custom jQuery code here alert('Thanks for liking!'); $('#like-message').fadeIn(); ); // Also detect when someone unlikes (optional) FB.Event.subscribe('edge.remove', function(href, widget) console.log('User unliked: ' + href); ); ; ); The fbAsyncInit function must be defined before the SDK loads. If you load the SDK asynchronously (as shown above), this pattern works perfectly.
More importantly, Facebook loads the iframe asynchronously. The DOM elements you think exist might not be ready. In theory, you could watch for attribute changes in the iframe, but cross-origin restrictions block this. Stick with FB.Event.subscribe – it’s the official, reliable way. Common Pitfalls & Debugging | Issue | Solution | |-------|----------| | Event never fires | Make sure you’re logged into Facebook and the page URL matches the data-href exactly. | | fbAsyncInit not running | Check that you defined it before the SDK script tag. | | jQuery not detecting | Wrap FB.Event.subscribe inside $(document).ready() if using DOM elements. | Final Thoughts You can’t directly use jQuery to click-detect inside a Facebook iframe, but with the SDK’s edge.create event, you get an even better solution. This method works for Like buttons on any URL, and it also detects unlikes.