Подтвердить что ты не робот

Прикрепите событие click() к кнопке "Like" FaceBook?

Я хотел бы сделать что-то на странице, когда пользователь нажимает "Мне нравится".

Я думал, что что-то простое, как следующее:

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

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

Это iFrame, который поставляется FaceBook, чтобы добавить кнопку Like на страницу:

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

My script пытается связать событие click с тегом привязки, который загружается в iFrame при загрузке страницы. Однако это не работает. Есть ли способ для меня, чтобы JQuery узнал, когда это нажали? Благодаря

4b9b3361

Ответ 1

API Facebook не позволяет вам подписаться на подобное событие click, но он позволяет вам подписаться на подобное событие (активируется, когда подобное действие завершено):

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

см. здесь.

Ответ 2

Сделайте PHP (или любой другой язык, который вы используете) script, чтобы CURL-источник из http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.MySite.Com... blahblahblah

Поместите источник из facebook в вашу html-страницу, тогда вы сможете делать все, что захотите, в JavaScript/jQuery с кодом из Facebook.

Некоторые примеры для CURL в PHP - http://www.php.net/manual/en/curl.examples.php

Ответ 3

Вы не можете использовать JavaScript для доступа к элементам в iframe, который не относится к текущему URL-адресу, так как я предполагаю, что домен, который вы используете, не является facebook.com, вы не сможете присоединить событие к подобной кнопке таким образом.

Ответ 4

Можно обнаружить события типа "как" и "в отличие" от кнопки facebook, используя edge.create и edge.remove соответственно.

Ответ 5

Я нашел работу по этой проблеме, которая хорошо работает с iframe. Он основан на комбинации решений, предложенных здесь при переполнении стека. Первый шаг - подсчитать количество понравившихся на странице. Затем сохраните это число в глобальной переменной. Вы можете сделать это во время события загрузки. Во-вторых, используйте решение, предложенное по этой ссылке Обнаружить щелчок в Iframe с помощью JavaScript. Когда мышь покидает определенную область, вы можете определить, изменилось ли количество кликов в зависимости от предыдущего количества кликов и текущего количества кликов.

Код для определения количества кликов доступен по этой ссылке 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(); }.