Повторный рендеринг плагинов Facebook с использованием FB.XFBML.parse

Есть ли способ использовать FB.XFBML.parse без повторного рендеринга плагина Facebook, который заставляет его «мерцать» (исчезать и снова появляться).

Будет использовать кнопку Facebook Like или панель рекомендаций Facebook.

Живой пример: http://www.gablabelle.com/eve-d

Сдвиньте, чтобы просмотреть мерцание в правом нижнем углу.

$.address.state(ajax_object.path).crawlable(true).value(whereiam);
$(".fb-recommendations-bar").data("href",whereiamurl);
//$(".fb-like").data("href",whereiamurl);
fburl = $(".fb-recommendations-bar").data("href");
//fburl = $(".fb-like").data("href");
console.log(fburl);
FB.XFBML.parse();

Большое спасибо за вашу помощь.


person Gab    schedule 25.12.2012    source источник


Ответы (5)


Вы можете ограничить область повторного анализа, передав родительский элемент DOM в FB.XFBML.parse.

person Sean Kinsey    schedule 26.12.2012
comment
Да, но он по-прежнему снова отображает плагин Facebook. - person Gab; 29.12.2012
comment
Тогда то, о чем вы просите, не имеет смысла - как вы можете снова загрузить плагин (новые данные), фактически не перезагружая его? - person Sean Kinsey; 29.12.2012
comment
Вопрос в том, есть ли способ перезагрузить его данные без повторного рендеринга плагина, который вызывает его мерцание (потому что он исчезает и снова появляется). - person Gab; 30.12.2012
comment
@gab Нет, вы заменяете один экземпляр плагина другим, что требует времени. Facebook не оптимизируется для таких случаев использования. - person Sean Kinsey; 03.01.2013

Добавьте непрозрачный слой поверх div плагина facebook, когда требуется «смена страницы». Анимируйте его, чтобы он был полностью непрозрачным. Вызовите FB.XFBML.parse() и дайте ему несколько секунд для повторного рендеринга. Анимируйте слой, чтобы он был непрозрачным, затем удалите слой непрозрачности поверх div плагина facebook (или оставьте его там, чтобы в следующий раз вам нужно было «сменить страницу» без фактической перезагрузки страницы.

Этот метод даст вам изящно исчезающий/появляющийся плагин, а не резко резкое «мерцание».

person DMCS    schedule 31.12.2012

Кэшировать лайки Facebook для предыдущего слайда + текущего слайда + следующего слайда в событии смены слайда. Чтобы при переходе к следующему или предыдущему и его Facebook-лайк уже был готов/загружен, пользователь не должен был видеть мерцание. Если только он/она не переборщит со слайдами.

person erichste    schedule 04.01.2013
comment
stackoverflow.com/questions/8777907/ - этот вопрос/ответ может относиться к вам... - person erichste; 04.01.2013

У меня такое было недавно.

Я обошел это, обернув XFMBL в переменную... не знаю почему, но без нее он, казалось, мерцал... полный хак, чтобы остановить мерцание, но у меня сработало!!

      if(call == 0){
          FB.XFBML.parse();
          call = 1;
  }
person Michael Stott    schedule 25.02.2013

DMCS предоставил то, что кажется единственным наполовину правильным ответом, но это ужасно. Вы не знаете, сколько времени потребуется веб-браузеру каждого человека для отображения материала. Обратный вызов, который якобы говорит, что он отрендерен, тоже не работает. Также мерцание не видно в firefox, а только в google chrome.

person Elrinth    schedule 19.06.2013