2010-09-15 5 views
21

Tôi muốn làm điều gì đó trên trang khi người dùng nhấp vào 'Thích'.Đính kèm sự kiện click() vào nút 'Thích' của FaceBook?

Tôi nghĩ một cái gì đó đơn giản như sau sẽ làm việc:

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('.connect_widget_like_button clearfix like_button_no_like').live('click', function() { 
      alert('clicked'); 
     }); 
    }); 
</script> 

Đây là iFrame rằng nguồn cung cấp FaceBook để thêm nút Giống như đến trang:

<iframe 
    id="FBLike" 
    src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah" 
    scrolling="no" 
    frameborder="0" 
    style="border:none; overflow:hidden; width:450px; height:80px;" 
    allowTransparency="true"> 
</iframe> 

Kịch bản của tôi cố gắng để ràng buộc một nhấp vào sự kiện vào thẻ neo được tải vào iFrame khi trang tải. Nó không hoạt động. Có cách nào cho tôi để có được jQuery để nhận ra khi điều này được nhấp? Cảm ơn

Trả lời

34

Facebook API không cho phép bạn để đăng ký vào các sự kiện click như thế nào, nhưng nó cho phép bạn để đăng ký vào những thứ tương tự sự kiện (bị sa thải xảy ra khi hành động như đã hoàn tất):

FB.Event.subscribe('edge.create', function(response) { 
    // like clicked 
}); 

xem here.

+0

nhưng điều này không thể được thực hiện trong một tab, phải không? bất kỳ giải pháp nào khác như tại http://www.facebook.com/901Tequila?v=ap4904458780, khi nhấp vào nút tương tự sẽ chuyển hướng bạn đến tường ghim? – SteMa

+3

không hoạt động đối với iframe, chỉ XFBML fb: như –

+1

hoạt động nhưng được kích hoạt sau 3 giây sau khi nhấp vào ứng dụng của tôi. –

3

Bạn không thể sử dụng JavaScript để truy cập các yếu tố trong iframe không thuộc URL hiện tại, vì tôi đoán miền bạn đang sử dụng không phải là facebook.com, bạn sẽ không thể đính kèm sự kiện vào giống như nút theo cách này.

4

Thực hiện một PHP (hoặc bất kỳ ngôn ngữ mà bạn sử dụng) kịch bản để curl nguồn từ http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah

Đặt nguồn từ facebook vào trang html của bạn, bạn có thể sau đó bạn có thể làm bất cứ điều gì bạn muốn trong JavaScript/jQuery với mã từ Facebook.

Một số ví dụ cho CURL trong PHP - http://www.php.net/manual/en/curl.examples.php

+0

Đó là một công việc khá lén lút xung quanh, tốt đẹp :-) –

+0

Nó cũng có nhiều khả năng chống lại TOS/chính sách của họ. –

+0

Tôi có nghi ngờ nghiêm túc về điều gì đó như thế sẽ hoạt động. Nó sẽ làm cho nút như spam và Facebook không thể cho phép điều đó. – Denis

2

Người ta có thể phát hiện sự kiện 'thích' và 'không giống' của nút facebook giống như sử dụng edge.createedge.remove tương ứng.

+0

Tôi không biết sự kiện 'edge.remove'. Bạn có một liên kết? –

-1

Tôi đã tìm thấy một công việc xung quanh về vấn đề này hoạt động tốt với khung nội tuyến. Nó dựa trên sự kết hợp của các giải pháp được đề xuất ở đây tại ngăn xếp tràn. Bước đầu tiên là đếm số lượt thích trên một trang. Sau đó lưu trữ số đó trong biến toàn cục. Bạn có thể thực hiện việc này trong khi tải sự kiện. Thứ hai, sử dụng giải pháp được đề xuất trên liên kết này Detect Click into Iframe using JavaScript. Khi chuột rời khỏi một khu vực cụ thể, bạn có thể xác định xem số lần nhấp có thay đổi dựa trên số nhấp chuột và số nhấp chuột hiện tại hay không.

Mã để xác định số lần nhấp có sẵn trên liên kết này http://jsfiddle.net/Takazudo/ function fetchLikeCount(url){ return $.Deferred(function(defer){ $.ajax({ dataType: 'jsonp', url: 'https://api.facebook.com/method/fql.query?callback=callback', data: { query: 'SELECT like_count FROM link_stat WHERE url="' + url + '"', format: 'JSON' } }).then(function(res){ try{ var count = res[0].like_count; defer.resolve(count); }catch(e){ reject(); } }, reject); function reject(){ defer.reject(';('); }; }).promise(); }.