2

こんにちは、私は自分の Web で Facebook のようなボタンを使用しています。私のコンテンツはすべて ajax 経由で読み込まれます。Facebook のようなボタンを 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.
});

そして、これが私のいいねボタンです

 <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 ボタンを表示する代わりに、表示したい DIV ラッパーに FB ボタンの HTML コードを動的に追加します。

<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 に答える