0

先日この問題に気付くまで、かなり前にスクリプトを作成しましたが、完全に正常に機能していました。FBのようなボタンが実際のページに表示され、正常に機能します...その後、他の共有サービスとのポップアップを表示するページに共有ボタンもあります...このポップアップでは、同じfbのようなボタンも表示します。

ページとポップアップの両方の場所で、まったく同じコードが使用されます。

<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>

変数と関数は正しいです。これは実際のページでうまく機能し、最近までページとポップアップの両方でうまく機能していました...だから、私の質問は、ページに同じいいねボタンのインスタンスを1つしか表示できないという変更があったかどうかだと思いますか? これしか思い浮かばないのですが、似たようなものに遭遇した人が他にいるのではないかと思います。最近まで同じコードに問題がなかったので、私はかなり困惑しています。

4

1 に答える 1

0

実際data-href、同じ HTML ドキュメント内で同じ値を持つ複数のいいね! ボタンをレンダリングすることは可能です。<div class="fb-like"/>次のように、Facebook Javascript SDK をロードする前に、要素が 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 ボタンがレンダリングされることに注意してください。この時点以降に追加された Like ボタンはレンダリングされません (おそらく、AJAX 呼び出しの後など、Javascript、jQuery などを介して DOM に追加された場合)。

SDK の読み込み後に 2 つ目の Like ボタンを DOM に追加する必要がある場合、DOM へFB.init()の追加後に呼び出すと、次のように、まだレンダリングされていない Like ボタンがレンダリングされます。

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

注意: これは機能しますが、次の警告メッセージがコンソールに出力されるため、お勧めしません。

FB.init は既に呼び出されています - これは問題を示している可能性があります。

于 2012-09-05T19:56:19.933 に答える