fb: кнопка входа не отображается в Firefox, IE или Opera - но отлично работает в Chrome - PullRequest
2 голосов
/ 20 марта 2012

Казалось, что это произошло без каких-либо изменений с моей стороны.Внезапно любой браузер, кроме Chrome, не обрабатывал тег fb: login-button, он просто отображал любой текст внутри тега в виде простого текста.

После нескольких часов поиска в сети, поиска возможных причин / решений яМы не нашли ничего, что касалось этого конкретного поведения.

Итак, я создал самый простой пример, который я мог бы проиллюстрировать проблему, и поставил его здесь: http://silverbucket.net/examples/fblogin/welcome.htm

В приведенном выше примере показано окно fb-login в Chrome,но не в Firefox, IE или Opera.

Вкратце, то, что находится на странице в приведенной выше ссылке, сначала есть HTML-тег вверху у меня:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" lang="en">

Ву меня есть голова:

<script src="http://connect.facebook.net/en_US/all.js"></script>

В теле, чуть ниже заголовка, у меня есть:

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

Тогда есть фактическая кнопка входа в систему fb:

<fb:login-button scope="email, user_interests, user_likes, publish_stream">log in with facebook</fb:login-button>

И в нижней части страницы, перед закрытием тега body, у меня есть FB JavaScript:

<script>
  $(document).ready(function() {
    window.fbAsyncInit = function() {
      FB.init({
        appId   : '153787078069017',
        cookie  : true, // enable cookies to allow the server to access the session
        xfbml   : true, // parse XFBML
        //channelUrl : '/channel.html', // channel.html file
        oauth   : true, // enable OAuth 2.0
        status : false
      });

      // whenever the user logs in, we refresh the page
      FB.Event.subscribe('auth.login', function(response) {
        if (response.authResponse) {
          window.location.href="http://example.com/fblogin";
        }
      });
    };

    (function() {
      var e = document.createElement('script'); e.async = true;
      e.src = document.location.protocol +
        '//connect.facebook.net/en_US/all.js';
      document.getElementById('fb-root').appendChild(e);
    }());

  });
</script>

Ничего сложного ... и это происходит не только в моем Firefox,но каждый коллега, с которым я встречался, тоже.

Ответы [ 2 ]

5 голосов
/ 20 марта 2012

Я бы предложил переместить window.fbAsyncInit = function() { за пределы $(document).ready(function() {.Это должно дать браузеру более согласованные результаты.

0 голосов
/ 20 марта 2012

Это выстрел в темноте, но попробуйте добавить ваш div fb-root перед фактическим кодом, включая кнопку входа в систему, если это возможно.

Это решило некоторые причуды fb, с которыми я сталкивался раньше.

...