Обновление FB: как URL-адрес Динамически с использованием JavaScript
Я хотел бы изменить URL-адрес типа FB: Like динамически с помощью javascript.
прямо сейчас я смог изменить атрибут href тега fb:like
(я вставил код ниже). но просто изменение 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);
}
любая помощь будет оценена. ТНХ..
Ответы
Ответ 1
Он работает для меня и для тега 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:
<span id="like"></span>
Ужасно это будет полезно для других парней:)
Ответ 2
другие решения:
вместо вашего fb: подобный объект, напишите FB iframe в свой html следующим образом:
<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.
Ответ 3
Для повторных социальных кнопок я использую этот код:
//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>
Ответ 4
Я думаю, у вас есть несколько вариантов...
-
Удалите элемент, создайте и добавьте строку XFBML, а затем проанализируйте родительский объект как вызов XFBML.parse.
-
Удалите элемент или контейнер, создайте и добавьте фактический объект XFBML, используя
-
Построить контейнер iframe будет передан в подобном url (с GET) с родительской страницы. Вы можете сделать это, даже не используя реальный бэкэнд, если вы можете получить строку запроса в JS. Затем просто создайте разметку до того, как вы запустите файл facebook SDK и аналогичную кнопку. Facebook iframes все их вещи в любом случае, поэтому этот метод не такой уж неуклюжим, как кажется. Пробовал это, хорошо работает.
Ответ 5
В последнее время вы также можете использовать версию HTML5, как описано здесь:
http://elure.co/43_facebook-like-button-dynamic-url-javascript.htm