2010-05-04 2 views
11

Я хотел бы изменить URL-адрес, похожий на FB: Как кнопка динамически с помощью javascript.Обновление FB: Как URL-адрес Динамически с использованием JavaScript

прямо сейчас я только смог изменить атрибут href тега fb:like (я вставил код ниже). но просто изменение href не работает. возможно, я должен вновь начать FB: Как кнопки, но до сих пор я не могу понять, как ..

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); 
} 

любая помощь будет оценена. ТНХ ..

ответ

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 код:

<span id="like"></span> 

Surly это будет полезно для больше парней :)

+2

I протестировали это решение и отлично работали. Спасибо. – Curlas

+0

Приветствую вас! –

+1

Отличный ответ!Спасибо Мохаммеду! – bestfriendsforever

2

Я думаю, что у вас есть несколько вариантов ...

  1. Удалить элемент, построить и добавить строку XFBML, а затем разобрать родительский объект вызова XFBML.parse.

  2. Удалить элемент или его контейнер, создавать и добавлять фактический объект XFBML с помощью

  3. построить IFrame контейнер получает передается в URL, как (с GET) от родительской страницы. Вы можете сделать это, даже не используя реальный бэкэнд, если вы можете получить строку запроса в JS. Затем просто создайте разметку до того, как вы запустите файл facebook SDK и аналогичную кнопку. Facebook iframes все их вещи в любом случае, поэтому этот метод не такой уж неуклюжим, как кажется. Пробовал это, работает хорошо.

8

еще решения:

вместо вашего фб: как объект, написать 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.

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

Знаете ли вы, как сделать то же самое для кнопок Linkedin? Это очень полезный код – tsukimi

+0

Я нашел что-то [здесь] (https://developer.linkedin.com/documents/creating-member-profile-plugin) для всех, кто интересуется – tsukimi

+0

Нет, я этого не делаю. Но я думаю, что это похоже, вам просто нужно вызвать процесс рендеринга кнопки. Также вы можете попробовать использовать кнопки ShareThis, у них хороший API. http://sharethis.com/ –

 Смежные вопросы

  • Нет связанных вопросов^_^