0

FacebookのChrome拡張機能に取り組んでいます。Facebookを使用している場合は、ニュースフィード/タイムライン/プロファイルの一番下までスクロールすると、さらに多くの投稿が表示されることがわかります。拡張機能は、実際には「いいね」ボタンの横にボタンを追加します。そのため、そのボタンを追加する投稿が他にもあるかどうかを確認する必要があります。

現在、ページが変更されているかどうかを確認するために、を使用していますsetInterval(function(){},2000)。ユーザーがボタンをクリックしたときに関数を実行したい。しかし、この関数を外部(または内部)に配置すると機能しませんsetInterval()–Koderは今編集します

ループを使用せずにWebページが変更されているかどうかを確認するにはどうすればよいですか?

例:

$(document).ready(function(){
    window.setInterval(function(){
          $(".UIActionLinks").find(".dot").css('display','none');
          $(".UIActionLinks").find(".taheles_link").css('display','none');
          $(".miniActionList").find(".dot").css('display','none');
          $(".miniActionList").find(".taheles_link").css('display','none');
              //only this function doesn't work:
          $(".taheles_link").click(function(){
            $(".taheles_default_message").hide();
            $(".taheles_saving_message").show();
          });
               //end
          $(".like_link").after('<span class="dot"> · </span><button class="taheles_link stat_elem as_link" title="תגיד תכל&acute;ס" type="submit" name="taheles" onclick="apply_taheles()" data-ft="{&quot;tn&quot;:&quot;&gt;&quot;,&quot;type&quot;:22}"><span class="taheles_default_message">תכל&acute;ס</span><span class="taheles_saving_message">לא תכלס</span></button>');
          $(".taheles_saving_message").hide();
    }, 2000);
});

将来、この拡張機能はAJAXを使用するsetInterval()ため、私にとってはさらに多くの問題が発生する可能性があります。

4

2 に答える 2

0

私が正しく理解していれば、ページのDOMが変更されたときに通知を受け取りたいと思います。そして、setInterval()関数を使用せずにこれを実行したいとします。

問題は、ページの読み込み後に作成された要素へのイベントハンドラーのアタッチにあるため、jquery.liveイベントアタッチメント手法を確認することをお勧めします。私はそれがあなたの問題を解決すると思います。

一般に、ページでミューテーションイベントをスローする必要があります。あなたが探しているものかもしれない突然変異イベント仕様があります。役に立つかもしれないいくつかのリンクがあります。

  1. http://tobiasz123.wordpress.com/2009/01/19/utilizing-mutation-events-for-automatic-and-persistent-event-attaching/

  2. jQueryで要素コンテンツの変更を検出する

于 2012-05-19T12:36:37.320 に答える
0
$(document).ready(function(){
    setInterval('fun()',5000);
    fun();
});
function fun()
{
    alert(11)
}
于 2012-05-19T12:38:31.040 に答える