我必须实现一个Facebook-Like按钮,其中url取自ajax请求...这意味着我在页面加载后设置了“href” - 属性。不幸的是,此时网址已经设置好了,所以当喜欢它时,它会将实际的网页网址作为网址... 有没有办法刷新likebutton?
答案 0 :(得分:43)
如果你正在使用jQuery,那么这个问题就是一个非常简单明了的解决方案:
$(document).ajaxComplete(function(){
try{
FB.XFBML.parse();
}catch(ex){}
});
答案 1 :(得分:2)
如果您使用的是XFBML,我不知道如何更改网址。但是,如果您使用的是iframe,则this code snippet应该有效:
<强> HTML 强>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.google.com&layout=standard&show_faces=true&width=450&action=like&font&colorscheme=light&height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true" id="theiframe"></iframe>
<br />
<input id="url" />
<input id="btn" value="Change" type="button">
<强>的jQuery 强>
$('#btn').click(function(){
url = "";
url += 'http://www.facebook.com/plugins/like.php?';
url += 'href=' + $('#url').val() + '&layout=standard&';
url += 'show_faces=true&width=450&action=like&';
url += 'font&colorscheme=light&height=80';
$('#theiframe').attr({'src': url});
});
答案 2 :(得分:2)
如果使用XFBML,则应该包装喜欢的按钮代码,例如
<fb:like href="http://example.com" send="true" width="450" show_faces="true"></fb:like>
进入div或span,例如:
<span class="fb-like">
<fb:like href="http://example.com" send="true" width="450" show_faces="true"></fb:like>
</span>
然后,通过ajax获取新的URL后,你必须清除已生成的facebook like widget,并将其替换为新的fb:like code
jQuery('.fb-like').html('<fb:like href="http://example.com" send="true" width="450" show_faces="true"></fb:like>');
而且你必须再次像按钮那样初始化facebook
FB.XFBML.parse();
最终代码可能看起来像这样。假设响应包含纯新URL
<span class="fb-like">
<fb:like send="true" width="450" show_faces="true"></fb:like>
</span>
<script type="text/javascript">
$.ajax({
url: "getMeUrl.php",
success: function(url){
$('.fb-like').html('<fb:like href="'+url+'" send="true" width="450" show_faces="true"></fb:like>');
FB.XFBML.parse();
}
});
</script>
要点:
To refresh facebook like button (or any other facebook XFBML) you have to:
1) destroy existing initialized widget (clear the content of XFBML code wrapper)
2) add new XFBML code into wrapper
3) initialize new code via FB.XFBML.parse();
答案 3 :(得分:0)
如果您正在使用fbml,您可以动态创建和解析该元素,有关详细信息,请参阅此答案:
How to add a Facebook "Like" button to an AJAX driven page
如果您使用的是iframe,则无需重新构建网址,只需刷新iframe即可。例如,要刷新页面上的所有iframe:
$("iframe").each(function(){
$(this).attr('src', $(this).attr('src'));
});