检查网页是否已被修改

时间:2012-05-19 12:21:47

标签: javascript jquery

我正在为facebook扩展Chrome扩展程序。如果您使用Facebook,您知道当您向下滚动到新闻Feed /时间线/个人资料的底部时,它会显示更多帖子。扩展实际上在“喜欢”按钮旁边添加了一个按钮。所以我需要检查是否有更多帖子要添加该按钮。

现在检查页面是否已被修改,我使用setInterval(function(){},2000)。 我想在用户单击按钮时运行一个函数。但是如果我把它放在外面(甚至在里面)setInterval()这个函数不起作用 - 刚刚编辑的Koder

如何在不使用循环的情况下检查网页是否已被修改?

示例:

$(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()可能会给我带来更多问题。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望在页面的DOM更改时收到通知。并且您希望在不使用setInterval()函数的情况下执行此操作。

由于您的问题在于在页面加载后创建的元素的附加事件处理程序中,您可能有兴趣查看jquery.live事件附件技术。我认为这将解决您的问题。

通常,您希望页面抛出突变事件。有mutation event spec可能是您正在寻找的。以下是一些可能有用的链接。

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

  2. Detect element content changes with jQuery

答案 1 :(得分:0)

$(document).ready(function(){
    setInterval('fun()',5000);
    fun();
});
function fun()
{
    alert(11)
}