Ответ Сахиля правильный. К тому времени, когда документ будет обработан, нет никаких гарантий, что какие-либо асинхронные сценарии уже загружены.
Если запуск вашего кода из-за обратного вызова fbAsyncInit
- это не то, что вам нужно, вы можете рассмотреть два альтернативных подхода:
Вариант 1
Загрузка SDK синхронно:
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
Таким образом, FB
будет существовать даже до начала рендеринга документа.
Вариант 2
Проверьте, загружен ли уже SDK, и предоставьте альтернативное решение, если нет.
if (window.FB) {
// use FB here ..
} else {
// still loading, tell user to wait one more second
}