$(document).ajaxComplete不会在内容脚本中触发

我正在使用Google Chrome扩展程序为我经常访问的网站提供一些额外的function,如果AJAX请求成功,我会尝试重新运行脚本。 由于网站的性质,这是必要的。

接下来:我想做的就是简单地说,只要AJAX请求成功就触发一个函数。 因此,我在相关网站上制作了以下内容并在控制台中运行:

$(document).ajaxSuccess(function() { console.log('AJAX success'); }); 

然后我继续使用该网站,每次通过AJAX加载新内容时,我确实得到了.ajaxSuccess确认,到目前为止一切都很好。

然后我开始将所有各种各样的零碎组合在一起,使其成为一个合适的Chrome扩展程序。 一切仍然.ajaxSuccess除了一件事:当.ajaxSuccess位在内容脚本中(我已经确定正确执行等等)时,网站上的AJAX请求不再触发它。

我试图理解它,但我没有太多运气。 我觉得扩展可能需要一些特殊权限来访问与AJAX相关的东西,尽管我不知道那可能是什么。 截至目前,扩展的权限如下:

 "permissions": [ "storage", "tabs", "http://website.com/*" ] 

我最终制定了一个有点不愉快的解决方法,类似于:

 var DOMTimeout = null; $('.class').bind('DOMNodeInserted', function() { if(DOMTimeout) clearTimeout(DOMTimeout); DOMTimeout = setTimeout(function() { console.log('AJAX probably added something'); }, 150); });