Прерывистая высота кадра

У меня есть этот код:

<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, но потом почему это работает иногда, а не в других?

1 ответ

Решение

Может быть, какое-то "состояние гонки", так что просто подождите, пока не определится FB:

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

Когда FB не будет определен, он будет проверять каждые 10 миллисекунд, пока не будет определен.

Другие вопросы по тегам