1

ページコンテンツが読み込まれる前にFacebookLikeBoxの読み込みを遅らせようとしています。これは、AJAXを介して実現しようとしていますが、これまでのところ結果はまちまちです。私がしたことは、以下のコード(HTML5バージョン)を取ることでした:

<div id="fb-root"></div>
<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&appId=147395032005356";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<div class="fb-like-box" data-href="http://www.facebook.com/platform" data-width="292"   data-show-faces="true" data-stream="false" data-header="false"></div>

...そしてそれは私のウェブサイトのどこかにそれ自体で座っていました。

次に、jQueryをセットアップしてコードを取得し、次のようにページに追加します。

// set 1 second timeout
setTimeout(function () {
    $.ajax({
        url: "/facebook/likebox.php",
        success: function(data){

            // add loaded data to page
            $('#foo').append(data);
        }
    });
}, 1000);

場合によっては(同じページでF5を押す)、これは機能し、一部は機能しませんでした。

私が達成しようとしていることに対してもっと良い解決策があるのか​​、それとも実際に何かを見落としているのかと思っていました。

4

1 に答える 1

1

javascriptをfbAsyncInit()コールバック関数に入れる必要があります。そうすれば、Facebook JavaScript SDKが完全にロードされてから、likeボックスを置くことができます。FB.XFBML.parse()like-boxのDOMを挿入した後、呼び出すことを忘れないでください

window.fbAsyncInit = function() {
 $.ajax({
    url: "/facebook/likebox.php",
    success: function(data){

        // add loaded data to page
        $('#foo').append(data);
        FB.XFBML.parse($('#foo')[0]);
    }
 });
};
于 2012-02-17T15:16:43.773 に答える