文档更改后运行js?

时间:2012-09-15 23:29:57

标签: javascript jquery ajax settimeout

我试着寻找答案,这是我的第一篇文章,如果我以某种方式陷入困境,请耐心等待。

基本上我的问题是:我正在为使用jQuery的Chrome编写扩展程序。我有另一个扩展,每10秒发出一次定时$ .ajax()请求。我需要找到一种方法来在每次定时ajax请求及其回调函数完成时运行我的代码。可以为我自己的脚本设置一个计时器,虽然这个计时器已经完成了一半并且也不起作用。

问题可以这样说明:

//extension 1
function timedFunc() {
   setTimeout(doStuff, 10000);
};
timedFunc();

//extension 2
//code to be run every time doStuff completes

我觉得这个问题可能有一个非常基本的解决方案,但我很感激帮助。

2 个答案:

答案 0 :(得分:0)

有一个名为DOMSubtreeModified的事件。 但它已经被弃用了,所以当时只有可用的解决方法。

Why is the DOMSubtreeModified event deprecated in DOM level 3?

我无法建议使用此事件,因为它甚至没有在所有浏览器中实现。

但是你可以做的(轻松)只是通过你所有的ajax调用触发你自己的事件!

示例:

在(任何)ajax调用完成时触发您的事件:

$(document).ajaxComplete(function() {
   $(document).trigger('domChanged');
}

并听取它:

$(document).on('domChanged',function() {
   alert("i changed the DOM tree!");
});

顺便说一句:

认为你只想对ajax调用做出反应...只需使用.ajaxComplete()事件:

http://api.jquery.com/ajaxComplete/

答案 1 :(得分:0)

我真的不明白你想说的是什么,但我确实理解你在标题中提出的问题,所以这是我的谦虚回答:

// a global variable for the documents content
var content=document.documentElement.innerHTML;

// return true if the document content has changed
function documentChanged(){
return content==document.documentElement.innerHTML;
}