ФБ.XFBML.Парс не работает в IE


Привет, я использую кнопку Facebook like в моем интернете. Весь мой контент загружается через ajax, и я пришел к выводу, что если вы хотите использовать кнопку Facebook like с загруженным контентом ajax, вы должны использовать FB.XFBML.parse(). Я использовал это, и он хорошо работает в firefox и chrome, но он не работает в IE. Я проверяю с IE 8 еще. Я искал решение и нашел здесь, чтобы добавить xmlns:fb="http://www.facebook.com/2008/fbml" в мой html-тег. Я сделал, но это еще не исправлено. Мой код выглядит как

  layout.php

 <div id="fb-root" style="display:none"></div>
    <script>
        window.fbAsyncInit = function() {
        FB.init({
          appId      : 'APPID', // App ID
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true  // parse XFBML
        });

        // Additional initialization code here
      };

        (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_GB/all.js#xfbml=1";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

    </script>

И это как я использую XFBML.parse

 $(".fblike").each(function(){
  FB.XFBML.parse($(this).get(0));
  //because having multiple likes button on same page.
});

А вот моя кнопка like

 <div class='fblike'><fb:like send='false' layout='button_count' width='100' show-faces='false' href='www.myurl.com?ref=facebook' ></fb:like></div>

Как заставить его работать с IE8 и IE9? Где я ошибаюсь и как исправить эту проблему?

С уважением,

2 2

2 ответа:

По моему опыту, если вы попытаетесь запустить FB.XFBML.parse(), завернутый в то, что скрыто перед этим вызовом, он не будет работать на IE и Firefox.

Это не сработает:

<div id="wrapper" style="display:none">
    <fb:like id="like_button" ... ...></fb:like>
</div>

<script>
FB.XFBML.parse(document.getElementById('like_button'), function() {
    $('#wrapper').show();
});
</script>

Можно было бы использовать что-то вроде этого:

<div id="wrapper" style="display:block; height:0px; overflow:hidden;">
    <fb:like id="like_button" ... ...></fb:like>
</div>

<script>
FB.XFBML.parse(document.getElementById('like_button'), function() {
    $('#wrapper').animate({height:'30px'}, 300) 
});
</script>

Надеюсь, что это помогает кто-то другой.

Это работает для меня на всех браузерах (проверено на IE6+, Chrome, FF, Opera, Safari).

Вместо отображения скрытой кнопки FB Я динамически добавляю HTML-код кнопки FB в оболочку DIV, где я хочу, чтобы он отображался:

<div id="fbWrapper"></div>

<script>
    $("#fbWrapper").append("<div class='fblike'><fb:like send='false' layout='button_count' width='100' show-faces='false' href='www.myurl.com?ref=facebook' ></fb:like></div>");
    FB.XFBML.parse($("#fbWrapper").get(0));
</script>

Или, если вы хотите показать кнопку FB внутри ранее скрытой панели, сначала сделайте панель видимой, а затем добавьте HTML-код кнопки FB:

<div id="myPanel" style="display: none">
    Follow us on Facebook:
    <div id="fbWrapper"></div>
</div>

<script>
    $("myPanel").show();
    $("#fbWrapper").append("<div class='fblike'><fb:like send='false' layout='button_count' width='100' show-faces='false' href='www.myurl.com?ref=facebook' ></fb:like></div>");
    FB.XFBML.parse($("#fbWrapper").get(0));
</script>