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

时间:2013-01-10 20:40:50

标签: jquery google-chrome-extension

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

var DOMTimeout = null;
    $('.class').bind('DOMNodeInserted', function() {
        if(DOMTimeout)
            clearTimeout(DOMTimeout);

    DOMTimeout = setTimeout(function() { console.log('AJAX probably added something'); }, 150);
});