我试着寻找答案,这是我的第一篇文章,如果我以某种方式陷入困境,请耐心等待。
基本上我的问题是:我正在为使用jQuery的Chrome编写扩展程序。我有另一个扩展,每10秒发出一次定时$ .ajax()请求。我需要找到一种方法来在每次定时ajax请求及其回调函数完成时运行我的代码。可以为我自己的脚本设置一个计时器,虽然这个计时器已经完成了一半并且也不起作用。
问题可以这样说明:
//extension 1
function timedFunc() {
setTimeout(doStuff, 10000);
};
timedFunc();
//extension 2
//code to be run every time doStuff completes
我觉得这个问题可能有一个非常基本的解决方案,但我很感激帮助。
答案 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()事件:
答案 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;
}