我正在使用Google Chrome扩展程序为我经常访问的网站提供一些其他功能,如果AJAX请求成功,我会尝试重新运行脚本。由于网站的性质,这是必要的。
接下来:我想做的就是简单地说,只要AJAX请求成功就触发一个函数。因此,我在相关网站上制作了以下内容并在控制台中运行:
$(document).ajaxSuccess(function() {
console.log('AJAX success');
});
然后我继续使用该网站,每次通过AJAX加载新内容时,我确实通过.ajaxSuccess
确认了它,到目前为止一切都很好。
然后我开始将各种各样的点点滴滴放在一起,使其成为一个合适的Chrome扩展程序。一切仍然有用,除了一件事:当.ajaxSuccess
位在内容脚本中时(我确定已正确执行等等),网站上的AJAX请求不再触发它。
我试图理解它,但我没有太多运气。我觉得扩展可能需要一些特殊权限来访问与AJAX相关的东西,尽管我不知道那可能是什么。截至目前,扩展程序的权限如下:
"permissions": [
"storage", "tabs", "http://website.com/*"
]
答案 0 :(得分:3)
我最终制定了一个有点不愉快的解决方法:
var DOMTimeout = null;
$('.class').bind('DOMNodeInserted', function() {
if(DOMTimeout)
clearTimeout(DOMTimeout);
DOMTimeout = setTimeout(function() { console.log('AJAX probably added something'); }, 150);
});