2011-09-16 24 views
0

我指定的Facebook的喜歡/發送按鈕,像這樣:發送按鈕顯示很奇怪 - 解決方法?

<fb:like href="[URL]" show_faces="false" width="428" action="recommend" font="tahoma" send="true"></fb:like> 

在顯示這些按鈕的過程中,他們通過這三個可視狀態:

1)發送按鈕和推薦按鈕顯示的副作用先與發送按鈕並排。

2)推薦按鈕和發送按鈕切換位置,但發送按鈕顯示在預期的顯示位置下方。

3)由於發送按鈕已經移回,推薦按鈕和發送按鈕通常並排顯示。

這是一個異常,我可以通過指定按鈕的方式做些什麼,或者我需要等待Facebook的修復嗎?

上編輯,這裏是我使用的代碼...

body標籤之後,我有(帶尖括號刪節站點特定的信息)...

<div id="fb-root"></div> 
<script language="javascript" type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: '<appid>', 
     status: true, 
     cookie: true, 
     xfbml: true, 
     channelUrl: '<siteroot>/channel.html', 
     oauth: true 
    }); 
    FB.Event.subscribe('edge.create', function(href, widget) { 
     _gaq.push(['_trackEvent', 'facebook', 'like', href]); 
    }); 
    }; 

    (function(d) { 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
</script> 

按鈕代碼如下:

<fb:like href="<pageurl>" show_faces="false" width="428" action="recommend" font="tahoma" send="true"></fb:like> 

回答

0

我還沒有看到這個自己,但聽起來有點像這可能是由整個頁面呈現之前填充的fb:like標籤引起的。你如何調用初始化標籤的JavaScript?您可以嘗試在window.onload事件中進行設置,以便在頁面完全加載之前不會運行。

有幾件事情嘗試:

括在與寬度風格div的,<fb:like>標籤:428px。

將async = true更改爲async = false(暫時只是爲了查看它是否解決了問題)。

同樣,嘗試chaning async = true to defer = true。

更改代碼佈局以這樣的:

<head> 
<script type='text/javascript' src='http://connect.facebook.net/en_US/all.js' defer='defer'></script> 
</head> 
<body> 
<div id="fb-root"></div> 
<script language="javascript" type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: '<appid>', 
     status: true, 
     cookie: true, 
     xfbml: true, 
     channelUrl: '<siteroot>/channel.html', 
     oauth: true 
    }); 
    FB.Event.subscribe('edge.create', function(href, widget) { 
     _gaq.push(['_trackEvent', 'facebook', 'like', href]); 
    }); 
    }; 
</script> 

或甚至是這樣的:

<head> 
window.onload=function() { 
    d=document; 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('body')[0].appendChild(js); 
    }; 
</head> 
<body> 
<div id="fb-root"></div> 
<script language="javascript" type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: '<appid>', 
     status: true, 
     cookie: true, 
     xfbml: true, 
     channelUrl: '<siteroot>/channel.html', 
     oauth: true 
    }); 
    FB.Event.subscribe('edge.create', function(href, widget) { 
     _gaq.push(['_trackEvent', 'facebook', 'like', href]); 
    }); 
    }; 
</script> 
+0

我做初始化只是在body標籤後,使用異步腳本。如果從onload調用,我不需要使用非異步腳本嗎?也許我正在做一些非標準的事情,但我想以適合每個人的方式使用異步腳本。 –

+0

我的意思是處理fb的腳本:like標籤......你有單獨的塊嗎?當您使用Facebook工具生成代碼時,該代碼與標籤「捆綁」。 –

+0

與之捆綁在一起的代碼是init腳本,我想。我將其移動到只是跟隨body標籤。 –