3

私のウェブサイトにはこれらの AddThis ボタンがあり、私のサイトは JS を使用してユーザーを画像ギャラリーに誘導します。画像を変更すると、フラグメント要素の画像タイトルで URL が更新されます。問題はこれが反映されていないことです。 AddThis リンクで。AddThis フォーラムからいくつかの回答を得ようとしましたが、API ドキュメントと addthis.toolbox() 関数を指摘されましたが、うまくいかないようですので、実行してみようと思いましたここで専門家を過ぎて。

これは基本ページの AddThis コードです。

<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style addthis_32x32_style">
<a class="addthis_button_preferred_1 add_this_but"></a>
<a class="addthis_button_preferred_2 add_this_but"></a>
<a class="addthis_button_preferred_3 add_this_but"></a>
<a class="addthis_button_preferred_4 add_this_but"></a>
<a class="addthis_button_compact add_this_but"></a>
<a class="addthis_counter addthis_bubble_style"></a>
</div>
<script type="text/javascript">var addthis_config = {"data_track_clickback":false};</script>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4e77111e2de880eb"></script>

<!-- AddThis Button END -->

ユーザーが画像を変更したときのJSスクリプトで、これを関数に追加しました。

addthis.toolbox(".addthis_toolbox");

私もこれを試しました

addthis.toolbox();

コードを実行すると、JS エラーは発生しませんが、AddThis ボタンの更新は表示されません。

ここで問題を確認できます。

http://www.martynazoltaszek.com/artpages?nid=30#Rendezvouz

このリンクは、「Rendezvouz」と呼ばれる特定の画像でサイトを開きますが、nid=30 は実際には「Walking by」と呼ばれる別の画像です。問題は AddThis (Facebook) によって示され、常に「Walking by」画像にリンクされます。 AddThis Gmail は問題ないように見えますが、上記の関数呼び出しの有無にかかわらず機能するため、これは API の要因ではないと思います。

前もって感謝します。

ps ?nid GET 変数と Fragment を使用する理由は、php ページの読み込みと JS の表示 (ページ参照なし) によるものですが、これにより非 JS ブラウザのサポートも残されます。

4

1 に答える 1

12

JavaScript駆動のサイトにハッシュバングを使用しているときに、同様の問題が発生しました。このコードが使用されたのは、コンテンツが非同期で読み込まれたときに共有ボタンが再レンダリングされないためです。状況に合わせて、この一部を利用できるはずです。たぶんaddthis.update()コードだけ

最初に addThis のスクリプトを async に変更しました

http://s7.addthis.com/js/250/addthis_widget.js#async=1

DOM がロードされたら、ハッシュ変更をリッスンします。ここで、addthis 共有の詳細を更新します。

古いブラウザーでこのビットを動作させるには、追加のプラグインが必要になる場合があります

これで、hashchange の配線がすべて完了しました。次のステップは、addThis を変更することです。

    $(function(){
        $(window).hashchange(function(){
            if($('body').hasClass('addThis')){
                addthis.ost = 0;
                addthis.update('share', 'url', window.location.href); // new url
                addthis.update('share', 'title', window.document.title); // new title.
                addthis.ready(); // this will re-render the buttons.
            }
            else {
                addthis.init();
                $('body').addClass('addThis');
            }
        });
        addthis.init() //As we've changed the addthis to async, you will have to call addthis.init() once the DOM has loaded.
    });

お役に立てれば。

于 2011-10-10T13:52:31.083 に答える