«FB не определено» Ошибка для IE8 - PullRequest
3 голосов
/ 22 ноября 2011

Я создал диалог запроса в 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 ]

1 голос
/ 22 ноября 2011

Ваша проблема в том, что функции Facebook еще не загружены к тому времени, когда вы пытаетесь их использовать. По данным Facebook:

Почти все JS API Facebook Connect загружаются асинхронно после вызова FB.init (). Из-за асинхронного характера JS API не обязательно доступны сразу после выполнения этих вызовов. Вы должны использовать FB.ensureInit или FB.Bootstrap.requireFeatures, чтобы убедиться, что API JS загружаются перед их использованием.

У нас есть вики-документация, которая описывает это более подробно. Однако мы только что узнали, что некоторые приложения Connect вызывали API Connect JS, например FB.Connect. * И FB.Facebook. * Сразу после вызова FB.init. Этот подход может вызвать периодические сбои, потому что функции еще не могут быть загружены.

Их документация довольно хорошая (не завершена на 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(); 
});
0 голосов
/ 22 августа 2012

Я сталкивался с этой же проблемой ОСОБЕННО при использовании ie8.

Быстрое исправление может быть достигнуто через НЕ используя HTTP://connect.facebook.net/en_US/all.js и вместо этого используя HTTPS://connect.facebook.net/en_US/all.js

По какой-то причине использование SSL решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...