0

我有这样的代码:间歇iframe的高度

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

这正确地重新调整我的iFrame的时间约50%。当时的另外50%不调整大小和下面的错误我的控制台上显示:

Uncaught ReferenceError: FB is not defined 
window.fbAsyncInit:122 
(anonymous function) 

起初我还以为这是与我如何嵌入了Facebook的Javascript SDK错误,但为什么它的工作原理有时而不是在其他时间?

+0

另请参阅这里也是:http://stackoverflow.com/questions/4556941/facebook-javascript-sdk-problem-fb-is-not-defined –

+0

谢谢,但我已经尝试了在那里的建议无济于事。我的问题并非Chrome所独有,IE和FF中的行为都是相同的...... – Aaron

+0

我的答案中提供的代码如何?你也尝试过了吗? –

回答

1

可能是“竞态条件”某种形式的,所以只是等待FB的定义,直到:

window.fbAsyncInit = function FbAsynchInit() { 
    if (typeof FB != "undefined" && FB) { 
     FB.Canvas.setSize({ height: 6000 }); 
    } else { 
     window.setTimeout(FbAsynchInit, 10); 
    } 
} 

当FB不会被定义它将会继续检查每10毫秒,直到它的定义。

+0

那么为什么有(无用的)初始化?无论如何,真的帮助,谢谢! – tomis

+0

@tomis Facebook的脚本加载速度足够快,可能有时情况并非如此,只有在主脚本试图调用脚本后才加载。 –

+0

明白,只是想知道为什么Facebook不关心,如果后备... – tomis