Плагины Facebook не работают на страницах контента/шаблонов

Я новичок в программировании плагинов для Facebook. Я имею в виду документ быстрого старта.

На моем веб-сайте у меня есть страница макета и несколько страниц контента. Только страница макета содержит полную структуру html-head-body, а остальные страницы содержимого содержат частичные элементы html (их можно рассматривать как шаблоны).

Я разместил скрипт FB.init() только на странице макета, сразу под тегом body:

<script>
window.fbAsyncInit = function () {
    FB.init({
        appId: 'MY-APP-ID',
        xfbml: true,
        version: 'v2.3'
    });
};

(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";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>

и пытаюсь протестировать интеграцию с помощью аналогичного плагина на одной из моих страниц контента:

                <div class="col-sm-10 fb-like"
                 data-share="true"
                 data-width="450"
                 data-show-faces="true">

Но я обнаружил, что он не работает, когда я размещаю его на страницах контента/шаблонов. Обратите внимание, что в этом случае я даже НЕ нашел какой-либо ошибки JavaScript в консоли браузера. Однако то же самое работает, когда я прямо помещаю то же самое на страницу макета.

Пожалуйста, дайте мне знать, что мне здесь не хватает.

P.S.: То же самое относится и к входу через fb (работает с макетом, но не с шаблоном).


person Sayan Pal    schedule 05.04.2015    source источник


Ответы (1)


Похоже, что init запускается до того, как шаблон был добавлен в DOM. Вы отметили свой вопрос для aurelia, поэтому я предполагаю, что у вас есть модель представления, поддерживающая шаблон. Рассмотрите возможность использования обратных вызовов жизненного цикла, которые вам доступны.

attached — этот обратный вызов вызывается после рендеринга шаблона и присоединения к нему виртуальной машины. Поместив сюда свой FB.init(), должно быть достаточно. Вы можете сделать это либо в родительском, либо в дочернем, в зависимости от вашей настройки.

person PW Kad    schedule 05.04.2015