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