0

我有这个代码:

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

这会在大约 50% 的时间内正确调整 iFrame 的大小。其他 50% 的时间它没有调整大小,并且我的控制台上出现以下错误:

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

起初我认为这是我嵌入 Facebook Javascript SDK 的方式的一个错误,但为什么它有时能工作而有时不能呢?

4

1 回答 1

1

可能是某种“竞争条件”,所以等到 FB 被定义:

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

当 FB 没有被定义时,它将每 10 毫秒检查一次,直到它被定义。

于 2011-11-10T12:20:39.960 回答