哪里是最好的地方

时间:2012-07-10 16:22:44

标签: javascript facebook asynchronous facebook-javascript-sdk

所以,div和调用fb js:Fb说要把它放在(body)标签之后。任何使用它的wp插件都会将它放在页脚(wp_footer()中,因为没有wp_just_after_body())。我有过这样的情况,我需要的fb功能只有在这个东西在body标签之后才有效。我不知道js足以知道区别是什么,以及身体或页脚是否是最佳位置。

2 个答案:

答案 0 :(得分:3)

在您要加载的每个页面上打开正文标记之后。

更多来自facebook SDK docs:

  

不能使用display:none或隐藏fb-root元素   可见性:隐藏,或SDK的某些部分无法正常工作   Internet Explorer。

     

SDK将元素插入到期望定位的fb-root中   相对于身体或相对于靠近顶部的元素   页。最好是fb-root元素不在元素内部   与位置:绝对或位置:相对。如果你必须放置   在定位元素内部的fb-root元素,那么你也应该   给它一个靠近身体顶部或身体某些部位的位置   SDK可能无法正常运行。

答案 1 :(得分:0)

如果您需要在文档的页脚附近使用js sdk,最好使用async,并且只在sdk加载并初始化后才进行api调用。

我用。 示例: 假设我已将所有api调用包装在函数中。

 <div id="fb-root"></div>
<script>
      window.fbAsyncInit = function() {
        FB.init({
    appId  : '135669679827333',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    channelUrl : 'https://anotherfeed.com/emo/channel.html', // channel.html file
    oauth  : true // enable OAuth 2.0
        });

// facebook has been loaded and init, you can call your api functions from here.
if (window!=window.top) {
FB.Canvas.EarlyFlush.addResource("https://anotherfeed.com/");
setTimeout("FB.Canvas.setAutoGrow(250);", 2000);
toggle('connections');  // my api call
FB.XFBML.parse(loginb); // my api call
}else {
}
// !facebook load and init.
      };
  // Load the SDK Asynchronously
(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'));

</script>
</body>
</html>