2

我正在开发 Google Chrome 扩展程序,以为我经常访问的网站提供一些额外的功能,如果 AJAX 请求成功,我会尝试让脚本再次运行。由于网站的性质,这是必要的。

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

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

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

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

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

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

1 回答 1

3

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

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

    DOMTimeout = setTimeout(function() { console.log('AJAX probably added something'); }, 150);
});
于 2013-01-11T22:21:00.070 回答