Почему XFBML работает везде, кроме Chrome?


Я пытаюсь добавить простую кнопку "Мне нравится" в свое приложение Facebook Canvas (iframe). Кнопка (и все другие элементы XFBML) работает в Safari, Firefox, Opera, но в Google Chrome.

Как я могу найти проблему?

ПРАВКА1:

Это ERB-макет в моем приложении Rails

<html xmlns:fb='http://www.facebook.com/2008/fbml' xmlns='http://www.w3.org/1999/xhtml'>
...
<body>
...
<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
      FB.init({
        appId: '<%= @app_id %>', status: true, cookie: true, xfbml: true
      });
      FB.XFBML.parse();
    };
    (function() {
      var e = document.createElement('script'); e.async = true;
      e.src = document.location.protocol +
        '//connect.facebook.net/en_US/all.js#appId=<%=@app_id%>&amp;amp;xfbml=1';
      document.getElementById('fb-root').appendChild(e);
    }());
    FB.XFBML.parse();
</script>
<fb:like></fb:like>
...

Сообщение об ошибке JS в инспекторе Chrome:

Uncaught ReferenceError: FB is not defined
  (anonymous function)
Uncaught TypeError: Cannot call method 'appendChild' of null
  window
  (anonymous function)

Вероятно, похоже на http://forum.developers.facebook.net/viewtopic.php?id=84684

Author: Andrei, 2011-01-12

2 answers

Я делаю точно то же, что и ты. И это работает. Попробуйте этот фрагмент.

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

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

<script>

  FB.init({appId: '<%= @app_id %>', status: true, cookie: true, xfbml: true});

  FB.Event.subscribe('auth.sessionChange', function(response) {

    if (response.session) {

      // A user has logged in, and a new cookie has been saved

    } else {

      // The user has logged out, and the cookie has been cleared

    }

  });

</script>
 1
Author: andrewk, 2011-01-12 23:02:21

Браузеры в корпоративных средах (или с VPN) за маршрутизатором Zscaler не смогут загружать ссылки сценариев, которые Zscaler временно перенаправит на страницу предупреждения о содержимом "Безопасность Интернета от Zscaler". Аналогично, некоторые щелчки в StackOverflow перестали бы отвечать. В качестве обходного пути я нахожу и вставляю неудачные ссылки в адресную строку и подтверждаю свое намерение в приглашении Zscaler.

 1
Author: eel ghEEz, 2018-06-27 11:09:03