FB.init导致Facebook标签setAutoGrow()不起作用

时间:2012-01-29 20:18:32

标签: facebook

我的HTML文档末尾附近有以下代码,就在</body>标记之前:

<div id="fb-root"></div>
<script type="text/javascript" src="//connect.facebook.net/en_US/all.js"></script>

<script type="text/javascript">
window.fbAsyncInit = function() 
{
    FB.init({ 
        appId : 'My app id', 
        status : true, 
        cookie : true, 
        xfbml : true 
    });
    FB.Canvas.setAutoGrow();
}
</script>

它不起作用。但是,当我摆脱FB.init函数时,自动调整大小的工作原理:

<div id="fb-root"></div>
<script type="text/javascript" src="//connect.facebook.net/en_US/all.js"></script>

<script type="text/javascript">
window.fbAsyncInit = function() 
{
    FB.Canvas.setAutoGrow();
}
</script>

有没有办法让页面有一个window.fbAsyncInit并同时向Facebook API提供appId?

1 个答案:

答案 0 :(得分:1)

你似乎对window.fbAsyncInit感到困惑,它是在异步加载javascript时使用的,如下所示。因此,删除此包装函数可以解决您的问题。

// Load the SDK Asynchronously
(function (d) {
  var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; } js = d.createElement('script'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/all.js"; d.getElementsByTagName('head')[0].appendChild(js);
} (document));