2010-05-04 13 views
11

Tôi muốn thay đổi URL thành giống như FB: Giống như nút tự động sử dụng javascript.Cập nhật FB: Giống như URL Tự động sử dụng JavaScript

ngay bây giờ tôi chỉ có thể thay đổi thuộc tính href của thẻ fb:like (tôi đã dán mã bên dưới). nhưng chỉ đơn giản là thay đổi href dường như không hoạt động. có lẽ tôi phải bắt đầu lại nút FB: Like, nhưng cho đến nay tôi không thể tìm ra cách ..

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

bất kỳ trợ giúp nào sẽ được đánh giá cao. thx ..

Trả lời

23

Nó làm việc cho tôi cho thẻ XFBML cũng không sử dụng FB iframe và thậm chí làm việc với nhiều FB như lời kêu gọi AJAX

Bạn chỉ cần quấn toàn bộ mã XFBML trong JS/jQuery và phân tích nó như hình dưới đây :

$('#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')); 
} 

mã HTML:

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

cáu kỉnh này sẽ rất hữu ích cho nhiều chàng trai :)

+2

tôi đã thử nghiệm giải pháp này và hoạt động tốt. Cám ơn. – Curlas

+0

Curlas chào mừng của bạn! –

+1

Câu trả lời tuyệt vời!Cảm ơn Mohammed! – bestfriendsforever

2

Tôi nghĩ rằng bạn có một vài lựa chọn ...

  1. Di chuyển các phần tử, xây dựng và nối thêm một chuỗi các XFBML và sau đó phân tích cú pháp phụ huynh phản đối một cuộc gọi XFBML.parse.

  2. Di chuyển các phần tử hoặc đó là container, xây dựng và nối thêm một đối tượng XFBML thực tế sử dụng

  3. Xây dựng một thùng chứa iframe được thông qua trong url như (với một GET) từ trang mẹ. Bạn có thể làm điều này mà không cần sử dụng backend thực nếu bạn có thể nhận chuỗi truy vấn trong JS. Sau đó, chỉ cần xây dựng đánh dấu trước khi bạn khởi động SDK facebook và nút tương tự sẽ hiển thị. Tuy nhiên, Facebook cũng có thể xử lý tất cả nội dung của họ, vì vậy phương pháp này không hề phức tạp như âm thanh. Đã thử điều này, hoạt động tốt.

8

khác các giải pháp:

thay vì fb của bạn: như đối tượng, hãy viết một iframe FB trong html của bạn như thế này:

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

và bây giờ bạn có thể thay đổi với javascript với chức năng này:

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

khi bạn thay đổi src, khung nội tuyến FB được cập nhật.

8

Đối với nút mạng xã hội reinit tôi sử dụng mã này:

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

Với mã html như thế này:

<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

bạn có biết cách thực hiện tương tự cho các nút Linkedin không? Đây là mã rất hữu ích – tsukimi

+0

Tôi tìm thấy một cái gì đó [ở đây] (https://developer.linkedin.com/documents/creating-member-profile-plugin) cho bất cứ ai quan tâm – tsukimi

+0

Không, tôi không. Nhưng tôi nghĩ nó tương tự, bạn chỉ cần xâm nhập vào quá trình render của nút. Ngoài ra, bạn có thể thử sử dụng nút ShareThis, họ có API tốt. http://sharethis.com/ –