0

ShareThis/AddThis を使用しており、自分のページの共有数がゼロの場合は非表示にしたいと考えています。

私が抱えている問題は、.hide() が確実に機能しないことです。リンクがページに 1 回表示されるときにしか機能しません。共有リンクのインスタンスが複数あるページでは、最初のセットでのみ機能します。

リンクが表示されるまでに時間がかかるため、機能していないと思います。ページの本文には、これが私が使用しているコードのみが表示されます。

<script type="text/javascript">
jQuery(function($) {

$('.stBubble').each(function(){         
    if($(this).text() == '0' || $(this).text() == 'New') {
        $(this).hide();
    }
});
});

フッターに表示されます。ページ テンプレートの ShareThis コードは次のとおりです。

<li><span class='st_twitter_vcount' displayText='Tweet'"></span></li>
<li><span class='st_facebook_vcount' displayText='Facebook'"></span></li>
<li><span class='st_email_vcount' displayText='Email'"></span></li>
<li><span class='st_sharethis_vcount' displayText='Share'"></span></li>

これを機能させるにはどうすればよいですか?

4

2 に答える 2

1

このロードタイミングの問題を攻撃するための好ましい方法は、addThisがページに挿入されたときに通知を受け取るプログラム的な方法を見つけることです。サードパーティのJSであるため、その通知に対してサポートされているaddThis APIを見つけるか、ライブラリをハックする必要があります(たとえば、関数の1つを、元の関数を呼び出して通知する独自の関数に置き換えます)。

優先する方法が見つからない場合、私が知っている他の唯一の方法は、ページにaddThisのものが見つかるまでページをポーリングすることです。おそらく、かなり短い間隔のタイマーを使用して、addThis HTMLの一部を検索します。このHTMLは、追加が完了すると常に存在することがわかっています。それが見つかったら、インターバルタイマーをキャンセルし、関数を呼び出して非表示にしたいものを非表示にすることができます。インターバルタイマーは新しいコンテンツをすぐにキャッチしない可能性があるため、JSが実行される前にコンテンツのフラッシュが表示され、見たくないものが非表示になる場合があります。これは、デフォルトですべてのaddThisカウンターを非表示にする静的CSSルールを追加することで回避でき、JSの実行時に、それをオーバーライドして目的のカウンターを表示できます。

コンテンツのページのポーリングは最後の手段であり、コンテンツが表示されない場合でも、インターバルタイマーが常にキャンセルされるようにする必要があることを付け加えておきます。そうしないと、視聴者のブラウザが動かなくなる可能性があります。

于 2011-09-06T07:06:29.767 に答える
0

addthis API を調べて、発生しているイベントのコールバック関数が見つかるかどうかを確認します。その場合は、関数に名前を付けてから、コールバック イベントが発生するたびにその関数を呼び出します。レイテンシの問題であれば、それで解決するはずです。

于 2011-09-06T05:58:00.687 に答える