2012-09-05 118 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已經被稱爲 - 這可能表示存在問題。

相關問題