2011-09-16 4 views
0

私はそうのようなボタンを送信/のようにFacebookを利用して指定します。これらのボタンを表示する処理で送信ボタンの表示が奇妙です - 回避策ですか?

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

、彼らはこれら3種類の視覚的な状態を経る:

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に変更します(一時的に問題を解決するかどうかを確認するだけです)。

同様に、defer = trueにするには、async = trueをchaningしてみてください。

<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タグの直後に移動しました。 –