Facebook 页面插件在 ajax 页面加载后不起作用
facebook page plugin doesn't work after ajax page load
我无法在我的网站中显示 Facebook 页面。我正在使用新的页面插件 got in here.
问题是,插件只在我第一次加载页面时显示。如果我转到另一个页面而不是 return,插件将停止工作。我正在使用 ajax 在网站上导航并在页面上加载新内容。
我尝试将来自 facebook 的 javascript 代码分别放在每个页面上,但没有成功。还尝试使插件成为一个函数并在 $(document).ready
和 content.load(this.href,myFunction());
上调用它,但效果不佳。
没关系,它只会在第一次加载时显示。
这是我正在使用的代码:
index.php
<body>
<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/pt_BR/sdk.js#xfbml=1&version=v2.3&appId=289243507832799";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
[...rest of code...]
<div id="site"></div>
</body>
home.php
<div class="col-md-6">
<div class="fb_social">
<div class="fb-page" data-width="500" data-href="https://www.facebook.com/mypage" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/mypage"><a href="https://www.facebook.com/mypage">MyPage</a></blockquote></div></div>
</div>
</div>
contact.php
<div class="col-lg-12">
<div class="fb_social">
<div class="fb-page" data-width="500" data-href="https://www.facebook.com/mypage" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/mypage"><a href="https://www.facebook.com/mypage">MyPage</a></blockquote></div></div>
</div>
</div>
Jquery/Ajax 加载内容
$(document).ready(function() {
var content = $('#site'),
firstLink = $(".navbar li:first-child a"),
firstLoad = firstLink.attr("href"),
navLink = $(".navbar li a");
//default load
content.load(firstLoad);
navLink.on("click", function(event){
event.preventDefault();
event.stopImmediatePropagation();
$(".active").removeClass("active");
$(this).addClass("active");
content.load(this.href);
});
});
有人知道怎么解决吗?
谢谢大家。
您需要在加载内容后立即使用 FB.XFBML.parse 来解析社交插件:
content.load(this.href, function () {
FB.XFBML.parse();
});
我无法在我的网站中显示 Facebook 页面。我正在使用新的页面插件 got in here.
问题是,插件只在我第一次加载页面时显示。如果我转到另一个页面而不是 return,插件将停止工作。我正在使用 ajax 在网站上导航并在页面上加载新内容。
我尝试将来自 facebook 的 javascript 代码分别放在每个页面上,但没有成功。还尝试使插件成为一个函数并在 $(document).ready
和 content.load(this.href,myFunction());
上调用它,但效果不佳。
没关系,它只会在第一次加载时显示。
这是我正在使用的代码:
index.php
<body>
<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/pt_BR/sdk.js#xfbml=1&version=v2.3&appId=289243507832799";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
[...rest of code...]
<div id="site"></div>
</body>
home.php
<div class="col-md-6">
<div class="fb_social">
<div class="fb-page" data-width="500" data-href="https://www.facebook.com/mypage" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/mypage"><a href="https://www.facebook.com/mypage">MyPage</a></blockquote></div></div>
</div>
</div>
contact.php
<div class="col-lg-12">
<div class="fb_social">
<div class="fb-page" data-width="500" data-href="https://www.facebook.com/mypage" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/mypage"><a href="https://www.facebook.com/mypage">MyPage</a></blockquote></div></div>
</div>
</div>
Jquery/Ajax 加载内容
$(document).ready(function() {
var content = $('#site'),
firstLink = $(".navbar li:first-child a"),
firstLoad = firstLink.attr("href"),
navLink = $(".navbar li a");
//default load
content.load(firstLoad);
navLink.on("click", function(event){
event.preventDefault();
event.stopImmediatePropagation();
$(".active").removeClass("active");
$(this).addClass("active");
content.load(this.href);
});
});
有人知道怎么解决吗? 谢谢大家。
您需要在加载内容后立即使用 FB.XFBML.parse 来解析社交插件:
content.load(this.href, function () {
FB.XFBML.parse();
});