javascript - プログラムでdata-href属性を変更した後、Facebook Likeウィジェットを再ロードする

javascript jquery html facebook

ユーザーがページにFacebookの「いいね」ボタンを挿入できるWebアプリケーションを作成しています。彼は「Insert Facebook Like」をクリックすると、ウィジェットコードが次のように挿入されます。

<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_US/all.js#xfbml=1";' +
        'fjs.parentNode.insertBefore(js, fjs);' +
        '}(document, \'script\', \'facebook-jssdk\'));</script>' +
        '<div class="fb-like" data-href="' + field.url + '" data-send="true" data-width="369" data-show-faces="true"></div>


次に、[ウィジェットの編集]ボタンをクリックすると、URLが入力されたテキストが表示されます。必要なURLを入力して、[保存]をクリックします。この後、data-hrefはURL値を取得します。
上記はすべて正常に動作しますが、URLが更新されてもウィジェットはリロードされません。ウィジェットをリロードするためにいくつかのメソッドを呼び出す必要があると思います。どうすればできますか?
答え
私の知る限り、data-href属性は、上記のスクリプトが実行されたときに1回読み取られます。また、div自体がコンテナになり、スクリプトの実行後、Likeプロセスで実際に役割を果たすことはありません。

代わりにXFBML Likeボタンを使用してみてください。

<fb:like href="http://example.com" send="true" width="450" show_faces="true"></fb:like>


ユーザーがURLを変更したら、既存のLikeボタンを破棄し、更新されたXFBMLを挿入してから、Facebook's JavaScript SDKを使用してFB.XFBML.parseを呼び出し、それを再作成します。
関連記事

javascript - blur()メソッドを呼び出すと、ウィンドウはどのくらい前にプッシュされますか?

javascript - ドラッグ中の壁とのRaphael JS衝突検出

javascript - $ .eachは1つのシリーズのハイチャートのみを表示します

javascript - キャンバスのセクションを(グリッドに基づいて)再描画する

javascript - Pythonを使用してGoogle App EngineにjQueryオートコンプリートを実装するにはどうすればよいですか?

javascript - 検索テキストボックスに基づいて行を表示/非表示

java - Java Scripting Engineクラスのインスタンス化

javascript - ScrollToスクリプトでスクロールするときにページのちらつき/途切れを防ぐ方法はありますか?

javascript - iframeを取得するための正しいJavaScript関数とは

javascript - JavaScriptでのXMLのクエリ