2

嗨,我在我的网站上使用 Facebook 之类的按钮。我所有的内容都是通过 ajax 加载的,我知道如果你想使用带有 ajax 加载内容的 facebook 按钮,你应该使用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.
});

这是我喜欢的按钮

 <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 一起工作?我在哪里错了,如何解决这个问题?

问候,

4

2 回答 2

6

以我的经验,如果您尝试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>

希望这对其他人有帮助。

于 2012-09-11T20:55:08.527 回答
1

这适用于所有浏览器(在 IE6+、Chrome、FF、Opera、Safari 上测试)。

我没有显示隐藏的 FB 按钮,而是动态地将 FB 按钮 HTML 代码附加到我希望它显示的 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 按钮,请先使面板可见,然后附加 FB 按钮 HTML 代码:

<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>
于 2013-08-27T09:58:26.900 回答