3

fb:like プラグインを自分のページに動的に更新したいと思います。

たとえば、index.html には、次のものがあります。

<fb:like id="fbtest" href="http://www.urltest.com" send="true" width="450" show_faces="true"></fb:like>

(Facebook は初期化され、すべてが完全に機能します。)

次に、このいいねボタンの URL を動的に変更したいと思います。したがって、jQuery を使用して、次のことを行います。

$('#fbtest').attr('href', 'http://www.urltest2.com').empty().off().removeData();
FB.XFBML.parse();

そして、それは機能しません... fb:like タグを削除して再作成した場合にのみ機能します(まったく同じDOMです!)。

ここでわかるように: Update FB:Like URL Dynamically using JavaScript、説明されているすべてのメソッドは fb:like タグを再作成します... 既存の fb:likeを更新する必要があります... 再作成するのではありません。出来ますか ?

編集:ここにテスト用のフィドルがあります:-):http://jsfiddle.net/nRTkS/

ありがとう!

4

2 に答える 2

0

あなたは間違いなくこれを行うことができます:

var iframe = $("iframe", "#fbtest");
iframe[0].src = iframe[0].src.replace(/&href=(.*?)&/, "&href=" + encodeURIComponent(url) +"&");
于 2012-06-03T23:13:12.280 に答える
0

いいえ、それは不可能だと思います。
メソッドは、そのFB.XFBML.parse名前が示すように、次を解析するだけです。

This function parses and renders XFBML markup in a document on the fly

プラグインが既にレンダリングされると、再レンダリングされません。そうしないと、たとえば同じページに複数のプラグインがあり、プラグインのようなプラグインで url 属性を変更して呼び出した場合、動作が少し奇妙になる可能性があります。FB.XFBML.parseドキュメント全体とその中のプラグインを再レ​​ンダリングします。

ええ、最初に要素を渡しながらメソッドを呼び出すことを確認するか、sdk が各プラグインの状態を維持し、それが変更された場合にのみ再レンダリングすることができますが、それはすべてより複雑ですdom からプラグインを削除し、新しいfb:likeタグを入力してからFB.XFBML.parse.

さて、私が本当の理由だと信じていることですが、それは単なる推測です.
SDK は、実際のプラグインを含むプラグイン コンテナー内に iftame を作成します。
like アクションの URL を変更するには、クロスドメイン通信が必要です (fb sdk の場合) プラグインから含まれるページ (したがってedge.create event ) への一方向でのみ可能だと思います。

于 2012-06-03T22:49:14.083 に答える