2

这可能是一个愚蠢的问题,但是like 按钮页面上的 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>
4

1 回答 1

0

我认为这是故意的。

那些将使用 javascript SDK 的人可能想要做的不仅仅是简单地添加一个赞按钮,因此它们包含 fb.init 脚本并向您显示您在哪里添加进一步的初始化代码等。

那些只是添加一个like按钮的人可以粘贴另一个blob,它掩盖了fbinit的东西,以避免与这一行混淆和复杂: (document, 'script', 'facebook-jssdk'));

我想如果你两者都尝试,它们都会起作用:)

于 2012-06-18T23:07:46.110 回答