0

我正在为客户创建一个页面,首先 - 我们将 10 个结果直接加载到页面上。这些结果完美地呈现了 facebook like 按钮。查看代码,我看到前 10 个结果在我期望的位置直接嵌入了 facebook 页面内容,并且我看到了 facebook like 按钮!

现在。我单击页面底部的链接,它加载了 10 个以上的结果。这 10 个以上的结果使用与前 10 个完全相同的代码,但是 facebook like 按钮不会出现。当我查看代码时,我发现 html 只是原始代码的复制粘贴,而不是前 10 个示例中的嵌入页面。

我最好的猜测是,通过将这些按钮延迟加载到页面上,它们的处理方式不同。但我不知道如何解决它...

关于我可以在这里做什么的任何想法?

4

2 回答 2

2

在执行下一页后尝试调用 FB.XFBML.parse(null,FB.Canvas.setSize)

于 2013-08-20T03:44:06.443 回答
0

每次div加载内容时,您都可以调用 FB like 按钮的脚本部分。

<script>
  function lazyload(){
    var wt = $(window).scrollTop();
    //* top of the window
    var wb = wt + $(window).height();
    //* bottom of the window

    $(".content").each(function(){
      var ot = $(this).offset().top;
      //* top of object (i.e. content div)
      var ob = ot + $(this).height();
      //* bottom of object
      var script = document.createElement( 'script' );
      script.type = 'text/javascript';
      script.src = 'http://connect.facebook.net/en_US/all.js#xfbml=1&appId=15496180XXXX';

      if(!$(this).attr("loaded") && wt<=ob && wb >= ot){
        //$(this).append(script);
        document.body.appendChild(script);
        $(this).attr("loaded",true);
        FB.XFBML.parse();
      }
    }
                  );
  }
  $(document).ready(function(){
    $(window).scroll(lazyload);
    lazyload();
  }
                   );
</script>

正如所指出的,但@alexlFB.XFBML.parse();每次动态加载类似按钮脚本时都必须调用。

于 2013-08-20T04:59:39.917 回答