【问题标题】:Facebook page plugin on dynamic page动态页面上的 Facebook 页面插件
【发布时间】:2015-10-08 05:52:07
【问题描述】:

如何在一个页面应用程序中重新加载 facebook 页面元素? https://developers.facebook.com/docs/plugins/page-plugin

如果我从 DOM 中删除 facebook 嵌入的 div 并再次添加此 div,facebook 插件将不会自动重新初始化。我猜我必须做额外的 javascript 工作,告诉插件重新初始化。

我正在使用加载 facebook 插件的代码。

<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_GB/sdk.js#xfbml=1&version=v2.4&appId=xxx";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

然后在主页动态选项卡上,我使用代码将 facebook 页面嵌入到我的单页应用程序中:

<div class="fb-page" data-href="https://www.facebook.com/facebook" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="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>

第一次加载正常,我可以看到嵌入的 facebook 页面。但是,如果我将更改选项卡,并再次更改回首页,则 facebook 代码不会执行,我再也看不到 facebook 页面了。

此时如何手动重新加载 Facebook 嵌入页面?

【问题讨论】:

    标签: facebook-page


    【解决方案1】:

    调用下面的JS代码

    FB.XFBML.parse();
    

    在加载新内容后使 Facebook SDK 重新加载每个

    <div class="fb-page" data-href="https://www.facebook.com/facebook" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="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>
    

    标签在页面上。如果您只需要在某个 DOM 元素中重新加载 Facebook 插件,请将其作为参数传递给函数:

    FB.XFBML.parse(document.getElementByID('certain-plugins-holder'));
    

    完整参考:https://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse

    【讨论】:

      【解决方案2】:

      我所做的是移动

      <div class="fb-page" data-href="https://www.facebook.com/facebook" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="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>
      

      到文档末尾的隐藏 div。一旦 facebook 加载它,然后我使用 javascript 将元素克隆到我需要它的位置。此示例使用 jQuery。在我需要页面插件显示的任何地方,我都放置了一个

      <div id="facebook-timeline"></div>
      

      然后在动态加载页面或部分的 javascript 中,我运行下面的脚本

      $('.fb-page').clone(true).replaceAll('#facebook-timeline');
      

      【讨论】:

        猜你喜欢
        • 2017-05-16
        • 1970-01-01
        • 1970-01-01
        • 2020-05-12
        • 2013-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-21
        相关资源
        最近更新 更多