2012-09-05 117 views
0

创建了一段时间的脚本,其工作完好,直到前几天我发现这个问题。 FB like按钮显示在实际页面上,并且工作正常......然后我在页面上也有一个共享按钮,显示与其他共享服务弹出...在此弹出窗口中,我还显示了同样的fb按钮。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> 

变量和函数是否正确。这工作正常,在实际的页面上,工作正常,在页面和弹出,直到最近...所以我想我的问题是,如果有什么改变的地方,你只能显示一个页面上的一个像按钮一样的实例?这是我能想到的唯一的事情,但想知道是否有其他人可能遇到类似的事情。我很困惑,因为直到最近,相同的代码从来没有问题。

回答

0

确实有可能在同一个HTML文档中呈现多个像按钮一样的data-href值。请检查您的<div class="fb-like"/>元素是DOM的一部分装载了Facebook的Javascript SDK像这样前:

<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调用之后)。

如果必须第二Like按钮添加到该SDK的加载后的DOM,呼吁FB.init()你除了DOM后将使任何如按钮尚未呈现,就像这样:

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

请注意:这工作,但不推荐,因为下面的警告信息将打印到控制台:

FB.init已经被称为 - 这可能表示存在问题。

相关问题