Кнопка «Мне нравится» в Facebook xfbml работает неправильно - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть раздел новостей на моем сайте, управляемый ajax. Я пытаюсь реализовать xfbml-версию кнопки «Мне нравится» на Facebook и столкнулся с несколькими проблемами.

При первом нажатии кнопки «Мне нравится» в новостях ни один из тегов og не вводится, поэтому все, что вы получаете, - это поле для комментариев. Как ни странно, если я затем просматриваю другой новостной элемент и возвращаюсь к первому новостному элементу, кнопка «Мне нравится» работает правильно и все данные og извлекаются правильно. Это похоже на проблему с кешированием?

У меня также была проблема с исчезновением всплывающего всплывающего окна после нажатия кнопки «Мне нравится», прежде чем появилась возможность ввести комментарий. Его там на долю секунды. Если мне тогда не нравится новость и она мне нравится, всплывающее всплывающее окно в конце концов остается на месте, но это может занять несколько попыток.

Вот пример заголовка

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en-GB" lang="en-GB">
<head>
<meta property="og:title" content="She's in fashion"/>
<meta property="og:type" content="article"/>
<meta property="og:url" content="http://www.kirkleescollege.ac.uk/news/1103"/>
<meta property="og:image" content="http://www.kirkleescollege.ac.uk/photo/news/1103/full"/>
<meta property="og:site_name" content="Kirklees College"/>
<meta property="og:description" content="This year Rebekah Crowther will take the first steps towards her dream career in fashion retail thanks to a new course at Kirklees College."/>
<title>Kirklees College News - She's in fashion</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

И это код тела, который в настоящее время находится на сервере тестирования, а не на реальном сервере.

<div id="fb-root"></div>
<script>
$(document).ajaxComplete(function(){
    try{
        FB.XFBML.parse(); 
    }catch(ex){
    }});

(function(d){
  var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
  js = d.createElement('script'); js.id = id; js.async = true;
  js.src = "//connect.facebook.net/en_US/all.js#appId=APPID&xfbml=1";
  d.getElementsByTagName('head')[0].appendChild(js);
}(document));



</script>

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#appId=APPID&xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<div class="fb-like" data-href="http://www.kirkleescollege.ac.uk/news/<?php echo $id; ?>" data-send="true" data-layout="button_count" data-width="450" data-show-faces="false"></div>

Куча вещей, о которых нужно упомянуть в приведенном выше коде, в действующем коде установлен мой идентификатор приложения, но я не был уверен, была ли это конфиденциальная информация, поэтому я удалил ее здесь. Я предполагаю, что оба идентификатора приложения должны быть одинаковыми?
Код FB.XFBML.parse () был получен из Stackoverflow. Это позволяет кнопке «Нравится» загружаться на странице, управляемой ajax.
То, что я не могу понять, это почему оно прерывисто. Вы бы подумали, что если что-то не так, оно все равно будет последовательным.

Надеюсь, кто-то может помочь, потому что это сводит меня с ума!

1 Ответ

2 голосов
/ 25 декабря 2012

необходимо добавить appid в коде

проверить строку

js.src = "//connect.facebook.net/en_US/all.js#appId=APPID&xfbml=1";

вместо APPID вы должны вставить свой собственный appid

...