Получить функцию Facebook Feed JS для загрузки после другой функции - PullRequest
0 голосов
/ 01 декабря 2018

Я использую официальный код js Facebook для загрузки фида страниц Facebook в боковую панель страницы веб-сайта.В коде Facebook есть параметр, который устанавливает высоту iframe Facebook.

У меня есть вторая функция js, которая измеряет высоту пикселя содержимого основного текста главной страницы после его загрузки и записывает эту высоту в код Facebook.

Вот две функции: -

(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 = 'https://connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v3.2&appId=419350085177010&autoLogAppEvents=1';
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

и

addEventListener('load', SetHeight);
function SetHeight() {
  var oDiv = document.getElementById("MyDiv");
    var sOriginalOverflow = oDiv.style.overflow;
    var sOriginalHeight = oDiv.style.height;
    oDiv.style.overflow = "";
    oDiv.style.height = "";
    var height = oDiv.offsetHeight-36;
    oDiv.style.height = sOriginalHeight;
    oDiv.style.overflow = sOriginalOverflow;
document.getElementById("refheight").setAttribute("data-height", height);
}

и html, который сообщает Facebook, где размещать ленту Facebook на странице: -

<div class="fb-page" id="refheight" data-href="[types field='facebook-url' output='raw'][/types]" data-tabs="timeline" data-height="500" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="false"><blockquote cite="[types field='facebook-url' output='raw'][/types]" class="fb-xfbml-parse-ignore"><a href="[types field='facebook-url' output='raw'][/types]"></a></blockquote></div>

Вы можете видеть, что setAttribute используется для установки параметра "data-height".

Это работает большую часть времени, но иногда функция Facebook запускается до "data-height""Параметр был обновлен, и подача выводится с высотой по умолчанию 500 пикселей.

Поэтому я ищу способ задержки функции js Facebook до тех пор, пока функция SetHeight не будет завершена.

...