Ошибка JavaScript в Facebook Connect - PullRequest
0 голосов
/ 02 июля 2011

В верхней части моей страницы я положил это:

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>

Затем в теле я делаю это:

<div id="fb-root"></div>

Затем у меня есть это позже на странице:

<fb:login-button perms="publish_stream">Connect with Facebook</fb:login-button>

И затем в моем готовом документе JQuery у меня есть это:

FB.init({
        appId: '115************', cookie: true,
        status: true, xfbml: true
    });

В FF все загружается нормально, и когда я нажимаю Connect with Facebook, все работает отлично.В КАЖДОМ другом браузере все нормально загружается, но когда я нажимаю «Подключиться к Facebook», я получаю эту ошибку:

FB.login () вызывается перед вызовом FB.init ().

Есть идеи?

PS Вставка сценария init() в head документа также не работает.Выдает ту же ошибку.

PPS При перемещении init() на <head> теперь он работает для IE и FF, но не для Safari или Chrome.

1 Ответ

0 голосов
/ 02 июля 2011

Следует учитывать, что <div id="fb-root"></div> всегда должен быть последним на странице, перед закрывающим тегом </body>.

Обновлено :

Кроме того, вместо вызова FB.init () в вашем document.ready, сделайте то, что предлагает документация Facebook , и поместите его в блок fbAsyncInit:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId  : 'YOUR APP ID',
      status : true, // check login status
      cookie : true, // 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);
  }());
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...