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が定義されない場合、FBは、定義されるまで10ミリ秒ごとにチェックを続けます。

于 2011-11-10T12:20:39.960 に答える