这可能是一个愚蠢的问题,但是类似按钮页面上的facebook按钮的脚本与javascript sdk页面上的脚本不同,但类似。 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_US/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
但是在javascript sdk页面上:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR_APP_ID', // App ID
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
答案 0 :(得分:0)
我认为这是故意的。
那些使用javascript SDK的人可能想要做的不仅仅是添加一个类似的按钮,因此它们包含fb.init脚本并向您显示添加更多初始化代码的位置等。
那些只是添加类似按钮的人可以粘贴其他blob,这会掩盖fbinit的内容,以避免混淆和使用此行的复杂性:
(document, 'script', 'facebook-jssdk'));
我想如果你们两个都尝试,他们都会工作:)