Вы должны загрузить функцию javascript в асинхронном режиме :
<script>
window.fbAsyncInit = function() {
FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
Затем, как только библиотека javascript загрузится, она преобразует вашу кнопку fbml like в соответствующий HTML-код iframe.Если он показывает пробел, пока не загрузится, поместите код fbml кнопки like в div и создайте стиль для div с помощью css.
Вот полный пример, в котором нет проблемы, о которой вы говорите (я загружаю библиотеку javascript асинхронно, с задержкой по времени, чтобы имитировать медленную загрузку. Обратите внимание, что при нажатии кнопки загрузки не отображается белый цвет).загружается.
<!DOCTYPE html>
<html>
<body bgcolor="#000">
<div id="fb-root"></div>
<fb:like href="http://stackoverflow.com" send="" width="100" layout="button_count" action="recommend"></fb:like>
<script>
window.fbAsyncInit = function() {
FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});
};
(function() {
// delay to simulate slow loading of Facebook library - remove this setTimeout!!
var t = setTimeout(function() {
alert('loading fb');
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}, 3000);
}());
</script>
</body>
</html>