2010-07-26 52 views
0

我試圖在頁面上實現一個XFBML評論框。它適用於Firefox和Chrome瀏覽器,但只能在Internet Explorer 8中零星地使用。Facebook XFBML和Internet Explorer 8異步加載問題

當頁面遇到FB.XFBML.parse('fb-stuff');時,出現'FB is undefined'錯誤。在嘗試解析XFBML之前,是否需要檢查Facebook Connect腳本是否已完成加載?

<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
     FB.init({ 
      appId : '117378991625799', 
      status : false, // check login status 
      cookie : false, // enable cookies to allow the server to access the session 
      xfbml : true // parse XFBML 
     }); 
    }; 
    (function() { 
     var e = document.createElement('script'); 
     e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 
     e.async = true; 
     document.getElementById('fb-root').appendChild(e); 
     FB.XFBML.parse('fb-stuff'); 
    }()); 
</script> 

回答

2

你不應該需要fb.xfbml.parse自己打電話,因爲你已經指示Facebook的初始化做就是您在fbAsyncInit。它主要用於在初始化後向頁面添加新的Facebook元素並希望對它們進行分析和呈現的情況。

是的,你應該等待JavaScript庫加載。這就是fbAsyncInit的全部內容。爲連接庫創建腳本元素並將其注入到該匿名函數的dom中,但瀏覽器加載和評估代碼需要一些時間,所以FB不能立即使用。當腳本已經加載(並且FB對象可用)時,它將嘗試執行window.fbAsyncInit,然後您可以執行任何您需要的操作。