$(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); });