2010-09-15 160 views
21

当用户点击“赞”时,我想在页面上做点什么。将click()事件附加到FaceBook'Like'按钮?

我想简单的东西像下面将工作:

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('.connect_widget_like_button clearfix like_button_no_like').live('click', function() { 
      alert('clicked'); 
     }); 
    }); 
</script> 

这是脸谱提供给Like按钮添加到页面中的iFrame:

<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> 

我的脚本试图绑定单击将事件添加到加载页面时加载到iFrame中的定位标记。它虽然不起作用。有没有什么办法可以让jQuery在点击时识别?谢谢

回答

34

Facebook的API不会让你订阅点击类似事件,但它可以让你订阅发生类似事件(烧制完成类似行动时, ):

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

参见here

+0

但这不能在标签中完成,对不对?任何其他解决方案,如http://www.facebook.com/901Tequila?v=ap4904458780,点击类似按钮将您重定向到针墙? – SteMa 2010-11-19 17:42:39

+3

不适用于iframe,只有XFBML fb:像 – 2012-08-15 01:12:44

+1

可以工作,但在点击我的应用程序之后发射3秒钟。 – 2013-01-29 16:28:51

3

您不能使用JavaScript访问不属于当前URL的iframe中的元素,因为我猜想您使用的域名不是facebook.com,您将无法将事件附加到像这样的按钮。

4

做一个PHP(或任何语言,你使用)脚本卷曲从http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah

源将来自Facebook源到HTML页面,然后你可以,你可以做任何你在JavaScript/jQuery的喜欢与来自Facebook的代码。

为PHP内卷曲一些例子 - http://www.php.net/manual/en/curl.examples.php

+0

这是一个相当鬼鬼祟祟的工作,不错:-) – 2010-09-15 15:23:05

+0

这也是最有可能违反他们的服务条款/政策。 – 2010-09-15 19:23:41

+0

我有严重的怀疑是什么东西会工作。它会像按钮spaable一样,Facebook不能允许。 – Denis 2010-09-15 19:56:53

2

可以分别使用edge.createedge.remove来检测Facebook的“喜欢”和“不像”事件。

+0

我不知道'edge.remove'事件。你有链接吗? – 2011-10-11 18:54:13

-1

我找到了解决这个问题的方法,可以很好的与iframe配合使用。它基于这里提出的堆栈溢出解决方案的组合。第一步是计算页面上的喜欢数量。然后将该数字存储在全局变量中。您可以在加载事件期间执行此操作。其次,使用此链接Detect Click into Iframe using JavaScript上建议的解决方案。当鼠标离开特定区域时,您可以根据之前的点击次数和当前的点击次数确定点击次数是否发生了变化。

确定点击次数的代码可在此链接上获得http://jsfiddle.net/Takazudo/ function fetchLikeCount(url){ return $.Deferred(function(defer){ $.ajax({ dataType: 'jsonp', url: 'https://api.facebook.com/method/fql.query?callback=callback', data: { query: 'SELECT like_count FROM link_stat WHERE url="' + url + '"', format: 'JSON' } }).then(function(res){ try{ var count = res[0].like_count; defer.resolve(count); }catch(e){ reject(); } }, reject); function reject(){ defer.reject(';('); }; }).promise(); }