如果您檢查與Chrome或Firefox,當顯示圖像的HTML,按鈕的div代碼如下所示:
<div id="login_div"><div class="fb-login-button"><a class="fb_button fb_button_medium"><span class="fb_button_text">Login with Facebook</span></a></div></div>
然而,當它不顯示,它看起來像這樣:
<div id="login_div"><div class="fb-login-button">Login with Facebook</div></div>
我看不到你所有的代碼,但我的猜測是FB代碼在執行你的div的代碼時遇到了一些計時問題。因此,您的div沒有正確設置,並且CSS無法應用相應的樣式(背景圖像,背景顏色)。我不能完全說出你在做什麼,但看起來你只是做了標準的if-logged-in-do-this-else-show-login-button。嘗試簡化您的Facebook登錄檢查代碼,如:
FB.getLoginStatus(function(response) {
if (response.session) {
fb_user_logged = 1;
// Do or Show facebook authenticated stuff
} else {
$("#login_div").html('<div class="fb-login-button"><a class="fb_button fb_button_medium"><span class="fb_button_text">Login with Facebook</span></a></div>');
}
});
此外,您應該使用asynchronous version來解決這些時間依賴性。
最起碼,你可以你的東西你所有的邏輯之前,早在
已經使用異步加載,但是在IE中,它確實看起來像當我刪除瀏覽器緩存,然後加載頁面似乎一切正常。我可以放在哪裏以防止用戶每次都必須刪除緩存? – Jimbo
您是否將fbml.parse添加到異步?它會阻止按鈕在下載sdk之前嘗試渲染,或者從可能需要整理的硬盤上的緩存中提取按鈕。或者將按鈕包裝在一個函數中,並從異步中調用該函數。 –
我做了,沒有什麼似乎改變了添加這三行。 – Jimbo