我想使用javascript动态地将网址更改为 FB:赞按钮。
现在我只能更改fb:like
标签的href属性(我已粘贴下面的代码)。但只是改变href似乎不起作用。也许我必须重新启动FB:Like按钮,但到目前为止我无法弄清楚如何...
function update_share(container, url) {
// update fb:like href value
var container = container[0] || document.body;
var button = container.getElementsByTagName('fb:like');
button[0].setAttribute('href', url);
}
任何帮助将不胜感激。 THX ..
答案 0 :(得分:23)
它对我来说也适用于XFBML标签而不使用FB iframe,甚至可以使用多个FB调用AJAX
你只需要将整个XFBML代码包装在JS / jQuery中并解析它,如下所示:
$('#like').html('<fb:like href="' + url + '" layout="button_count" show_faces="false" width="65" action="like" font="segoe ui" colorscheme="light" />');
if (typeof FB !== 'undefined') {
FB.XFBML.parse(document.getElementById('like'));
}
HTML code:
<span id="like"></span>
这对于更多的人来说会有所帮助:)。
答案 1 :(得分:8)
另一种解决方案:
而不是你的fb:like对象,在你的html中写一个FB iframe:
<iframe id="face" name="face" src="http://www.facebook.com/plugins/like.php?href=http://www.google.fr&layout=button_count&show_faces=false&width=400&action=like&font=arial&colorscheme=light" allowtransparency="true" style="border: medium none; overflow: hidden; width: 400px; height: 21px;" frameborder="0"scrolling="no"></iframe>
现在您可以使用此功能更改javascript:
function setUrl(url)
{
sUrl = url;
url = "http://www.facebook.com/plugins/like.php?href="+sUrl+"&layout=button_count&show_faces=false&width=400&action=like&font=arial&colorscheme=light";
document.getElementById('face').setAttribute('src', url);
//alert("url : "+url);
}
更改src时,会更新FB iframe。
答案 2 :(得分:8)
对于reinit社交按钮,我使用以下代码:
//Facebook like
if(typeof(FB) !== 'undefined')
FB.XFBML.parse(document.getElementById('fblike'));
//Google plus one
if(typeof(gapi) !== 'undefined') {
gapi.plusone.render(document.getElementById('gplus'),{
'href':location.href,
'annotation':'bubble',
'width': 90,
'align': 'left',
'size': 'medium'
});
}
//Twitter tweet button
if(typeof(twttr) !== 'undefined') {
$('.twitter-share-button').attr('data-url',location.href);
twttr.widgets.load();
}
使用这样的html代码:
<div style="float:left;margin-top: 5px;width:80px;">
<div id="gplus" class="g-plusone" data-size="medium"></div>
</div>
<div style="float:left;margin-top:5px;width:90px;">
<a href="https://twitter.com/share" class="twitter-share-button">Tweet</a>
</div>
<div style="float:left;margin-top:5px;width:80px;" id="fblike">
<fb:like send="false" layout="button_count" width="100" show_faces="false"></fb:like>
</div>
答案 3 :(得分:2)
我认为你有几个选择......
删除元素,构建并附加一个XFBML字符串,然后解析父对象的XFBML.parse调用。
删除元素或它的容器,使用
构建一个iframe容器从父页面传入类似的url(带有GET)。如果可以在JS中获取查询字符串,则无需使用真正的后端即可完成此操作。然后在初始化facebook SDK之前构建标记,然后渲染类似按钮。 Facebook无论如何都会把他们所有的东西都装进去,所以这种方法并不像听起来那么笨重。试过这个,效果很好。
答案 4 :(得分:0)
最近你也可以使用HTML5版本,如下所述: http://elure.co/43_facebook-like-button-dynamic-url-javascript.htm