Только для IE8: Facebook Like Box не отображается - PullRequest
2 голосов
/ 19 октября 2011

Итак, у меня есть проблема, как и у многих других: Facebook Like Box не воспроизводится в IE8 (IE7 ОК) Я нашел много сообщений об этом, перепробовал все решения, но не удалось ... Сообщение IE8: FB.FBXML Нет или не объект

Примечание: есть функция, которая обрабатывает изменение размера FB Like Box.

Вот мой код HTML5:

<!doctype html>
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="fr" xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/"  xmlns:fb="http://www.facebook.com/2008/fbml"><![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="fr"> <!--<![endif]-->
<head>
...
    <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
</head>
<body>
...
    <article>
    <div class="row" id="content">
            <div class="twelvecol last">
            <div id="fb-root"></div>
                <div class="fb-like-box" data-href="http://www.facebook.com/divstudio" data-width="1140" data-show-faces="true" data-stream="true" data-header="false"></div>
            </div>
    </div>
    </article>
...

<script>
$(document).ready(function(){
        var contentwidth = $('#content').width();
        $('.fb-like-box').attr('data-width', contentwidth - '40');
        FB.FBXML.parse(document.getElementsByClassName('.fb-like-box'));
});
</script> 

 <script>(function(d, s, id) {
                  var js, fjs = d.getElementsByTagName(s)[0];
                  if (d.getElementById(id)) {return;}
                  js = d.createElement(s); js.id = id;
                  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
                  fjs.parentNode.insertBefore(js, fjs);
                }(document, 'script', 'facebook-jssdk'));</script>      
</body>
</html>

Есть идеи?

веб-сайт: http://www.divstudio.fr/emergenza/jazz/actu.html

спасибо

Ответы [ 3 ]

4 голосов
/ 10 апреля 2012

Вы должны добавить эти строки в тег.

xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/"
xmlns:fb="http://www.facebook.com/2008/fbml"

Если в теге уже есть какие-либо атрибуты, оставьте их как есть.Так что начальный HTML-тег выглядит следующим образом.

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" lang="<?php print $language->language ?>" xml:lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">

Очистите кэш, если кэширование включено.Должно работать в IE-8

3 голосов
/ 10 мая 2013

У меня была такая же проблема, и добавление соответствующих атрибутов xmlns не помогло. Как выяснилось, причина моей проблемы связана с другой проблемой: Ящик Facebook не отображается, когда пользователь не вошел в Facebook . У Иги и Васима Кази были ответы, которые привели меня к решению. Вот как можно решить проблему:

  1. Войдите в учетную запись Facebook, которая управляет страницей, которую вы хотите отобразить в поле «лайк».
  2. На левой навигационной панели нажмите «Страницы».
  3. Нажмите на заголовок страницы, чтобы открыть панель администратора для этой страницы.
  4. Нажмите на страницу редактирования -> Изменить настройки
  5. Вы увидите поле с надписью «Ограничения по стране». Если в этом поле указаны ЛЮБЫЕ страны, поле «Мне нравится» будет пустым, если пользователь не вошел в Facebook, И будет пустым в Internet Explorer (7, 8, 9) . Это имеет смысл: единственный способ, с помощью которого Facebook мог бы обеспечить соблюдение географических ограничений с какой-либо определенностью, это убедиться, что пользователь вошел в систему. Почему это влияет на IE (вне зависимости от того, вошел пользователь в систему или нет), остается загадкой, но это было причина проблемы в моем случае.
0 голосов
/ 07 января 2012

У меня была такая же проблема с модулем facebook для drupal 6.

Я решил свою проблему, изменив тип разметки с XFBML на HTML5

Затем я добавил скрипт HTML5 в раздел <head>:

<!--[if lt IE 9]>
  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

Надеюсь, это решит и вашу проблему.

...