0

很久以前创建了一个脚本,它运行得非常好,直到前几天我注意到这个问题。FB like 按钮显示在实际页面上并且工作正常......然后我在页面上还有一个共享按钮,显示与其他共享服务的弹出窗口......在这个弹出窗口中,我还显示了 SAME fb like 按钮。

页面和弹出位置都使用完全相同的代码:

<div class="fb-like" data-href="'+ encodeURL(fb_url()) +'" data-action="'+ settings.fbAction +'" data-colorscheme="'+ settings.fbcolorscheme +'" data-send="false" data-layout="button_count" data-width="97" data-show-faces="false"></div>

变量和函数是正确的。这在实际页面上运行良好,并且直到最近在页面和弹出窗口上都运行良好......所以我想我的问题是是否有一些改变,你只能在页面上显示相同按钮的一个实例?这是我唯一能想到的,但想知道是否有其他人遇到过类似的事情。我很困惑,因为相同的代码直到最近才出现问题。

4

1 回答 1

0

确实可以在data-href同一个 HTML 文档中呈现多个具有相同值的类似按钮。请在加载 Facebook Javascript SDK 之前检查您的<div class="fb-like"/>元素是否是 DOM 的一部分,如下所示:

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

请注意,如果您包含 YOUR_APP_ID 并已xfbml=1设置(根据上面示例中类似查询字符串的附录),那么在 SDK 加载完成后将呈现 Like 按钮。在此之后添加的任何点赞按钮都不会被渲染(也许如果它们是通过 Javascript、jQuery 或类似方式添加到 DOM - 例如在 AJAX 调用之后)。

如果必须在加载 SDK 后将第二个 Like Button 添加到 DOM,在添加到 DOM 后调用FB.init()将呈现任何尚未呈现的 Like Button,如下所示:

FB.init({
    appId:'YOUR_APP_ID', 
    xfbml:true
});

注意:这可行,但不建议这样做,因为以下警告消息将打印到您的控制台:

FB.init 已被调用 - 这可能表明存在问题。

于 2012-09-05T19:56:19.933 回答