Как загрузить метод функции после того, как социальный плагин Facebook завершен? - PullRequest
5 голосов
/ 04 сентября 2011

У меня есть jQuery masonry для размещения элементов списка на моем веб-сайте, каждый элемент списка имеет комментарии fb :.Загружать SDK асинхронно, даже помещая метод "$ container.masonry ('reload');"после FB.init () элементы списка по-прежнему перекрываются.

Я проверил установку поля alert () перед перезагрузкой кладки, если быстро закрыть окно оповещения, элементы по-прежнему перекрываются, но через некоторое время закрывают его.отображать правильно с полем.Поэтому я предполагаю, что перезагрузка кладки запускается до окончания загрузки содержимого fb: comments.

Как запустить перезагрузку кладки после завершения загрузки содержимого fb: comments?Не нажатием кнопки.Изображения показывают, когда они перекрываются и перезагружаются после fb: comments.

Ответы [ 2 ]

3 голосов
/ 04 сентября 2011

Если вы используете xfbml версию плагинов, вы можете подписаться на xfbml.render - запускается после завершения всех плагинов (вызовов). http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/

1 голос
/ 11 ноября 2016

Согласно FB.Event.subscribe , есть событие загрузки, которое будет инициировано автоматически, когда страница закончит рендеринг плагинов

Шаг 1: В HTML (поместите его там, где вы хотите, чтобы отображался социальный блок):

<div class="fb-page" data-href="https://www.facebook.com/facebook" data-small-header="true" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/facebook"><a href="https://www.facebook.com/facebook">Facebook</a></blockquote></div></div>

Шаг-2: В нижнем колонтитуле (непосредственно перед окончанием тега <body>):

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function(){
    //FB.init({ status: false, cookie: true, xfbml: true });
    FB.Event.subscribe("xfbml.render", function(){
        SocialBoxesLoaded(); //-->this is what we want (any custom Function) :)
    });
};
(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/sdk.js#xfbml=1&version=v2.8";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

function SocialBoxesLoaded(){
    //...Your Custom Code...
}
</script>
...