“FB未定义”IE8错误

时间:2011-11-22 14:18:54

标签: facebook internet-explorer internet-explorer-8

我在Facebook上创建了一个请求对话框,它在Firefox和Chrome中运行良好,但在IE8中,它给出了错误:FB is undefined。请在下面找到我使用的代码。

<html xmlns=="http://www.w3.org/1999/xhtml"
  xmlns:fb="https://www.facebook.com/2008/fbml">
  <head>
    <title>Request Tester C</title>

      </head>

  <body>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>

<p>
</p>
<script>

  FB.init({
    appId  : 'XXXXXXXXXXXXXXXXXXXXX',
    status : true,
    cookie : true,
    oauth: true
  });


  function sendRequestViaMultiFriendSelector() {
    FB.ui({method: 'apprequests',
      message: 'My Great Request'
    }, requestCallback);
  }

  function requestCallback(response) {
    // Handle callback here
            window.location.href = "test.php";

  }
            sendRequestViaMultiFriendSelector();    
    </script>


 </body>
</html>

2 个答案:

答案 0 :(得分:1)

您的问题是,在您尝试使用Facebook功能时,Facebook功能尚未完成加载。根据Facebook:

  

在调用FB.init()之后,几乎所有Facebook Connect的JS API都是异步加载的。由于异步性质,在进行这些调用后,JS API不一定立即可用。您应该使用FB.ensureInit或FB.Bootstrap.requireFeatures来确保在使用它们之前加载JS API。

     

我们有一个wiki文档,可以更详细地描述这一点。但是,我们刚刚发现一些Connect应用程序在调用FB.init后立即调用了Connect JS API,如FB.Connect。*和FB.Facebook。*。这种方法会导致间歇性故障,因为这些功能可能尚未加载。

他们的文档非常好(不是100%完整),对您有用。现在,它应该足以包装你的代码:

function sendRequestViaMultiFriendSelector() {
  FB.ui({method: 'apprequests',
    message: 'My Great Request'
  }, requestCallback);
}

function requestCallback(response) {
  // Handle callback here
  window.location.href = "test.php";
}

FB_RequireFeatures(["Connect"], function() {
  FB.init({
    appId  : 'XXXXXXXXXXXXXXXXXXXXX',
    status : true,
    cookie : true,
    oauth: true
  });
  sendRequestViaMultiFriendSelector(); 
});

答案 1 :(得分:0)

我在使用ie8时特别面对同样的问题。

通过NOT HTTP://connect.facebook.net/en_US/all.js可以实现快速修复 而是使用HTTPS://connect.facebook.net/en_US/all.js

出于某种原因,SSL解决了这个问题。