以下是Facebook建议如何将JS SDK添加到您的来源。
window.fbAsyncInit = function() {
FB.init({
appId : '{your-app-id}',
status : true,
xfbml : true
});
};
(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/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
如果我理解正确,代码的第二部分在DOM中创建一个<script></script>
节点并将源设置为//connect.facebook.net/en_US/all.js
为什么window.fbAsyncInit
功能在此之前而不是之后?浏览器是否会在它实际到达实际加载SDK的代码的第二部分之前尝试运行它?是否有可能只在调用FB.init()
后才在DOM中加载all.js,从而产生错误?
答案 0 :(得分:1)
为什么window.fbAsyncInit函数在此之前而不是之后?
您可以在任何地方编写此代码。
SDK加载异步后会触发浏览器是否会在实际访问实际加载SDK的代码的第二部分之前尝试运行它?
window.fbAsyncInit
,因此无论您在之前/之后或任何地方编写此内容都无关紧要。
只有在调用FB.init()之后才能在DOM中加载all.js,从而产生错误吗?
什么错误?顺便说一句,在FB.init之后无法加载all.js。这是相反的过程 - 只有在加载SDK后才能初始化FB
!加载SDK后,它将自动进入 - window.fbAsyncInit = function() {