动态页面

时间:2015-07-18 17:57:39

标签: facebook-page

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

如果我从DOM中删除facebook embedded 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嵌入页面?

2 个答案:

答案 0 :(得分:6)

调用以下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

答案 1 :(得分:0)

我做的是移动

<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');