Прикрепите событие 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 узнал, когда это нажали? Благодаря
Ответы
Ответ 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();
}
.