Chrome扩展在ajax更改上运行内容脚本

Chrome扩展在ajax更改上运行内容脚本,ajax,google-chrome,google-chrome-extension,Ajax,Google Chrome,Google Chrome Extension,我有一个chrome扩展,可以对网站进行一些修改(编辑评论) 在站点上最近的更改之后(站点不是我的)-注释块使用ajax加载(在整个页面重新加载的简单post请求之前) 现在,如果我第一次加载页面-内容脚本可以工作,但是当我转到下一个页面时,比如第2页-注释是使用ajax添加的,扩展脚本不再运行。所以评论没有按我想要的方式改变 有没有什么简单的方法可以监听DOM的页面更改并再次应用扩展脚本 在清单文件中,我有: { "name": "Name", "version": "1.0",

我有一个chrome扩展,可以对网站进行一些修改(编辑评论)

在站点上最近的更改之后(站点不是我的)-注释块使用ajax加载(在整个页面重新加载的简单post请求之前)

现在,如果我第一次加载页面-内容脚本可以工作,但是当我转到下一个页面时,比如第2页-注释是使用ajax添加的,扩展脚本不再运行。所以评论没有按我想要的方式改变

有没有什么简单的方法可以监听DOM的页面更改并再次应用扩展脚本

在清单文件中,我有:

{
  "name": "Name",
  "version": "1.0",
  "description": "Description",
  "icons": {"16":"16.png",
            "48":"48.png",
            "32":"32.png",
            "128":"128.png"},
  "browser_action": {
    "default_title": "Default title",
    "default_icon": "48.png",
    "popup": "popup.html"
  },
  "permissions": [
    "tabs",
    "http://www.site.com/*",
    "notifications",
    "unlimitedStorage"
  ],

  "options_page": "options.html",
  "background_page": "background.html",

  "content_scripts": [
                {
                    "matches": ["http://www.site.com/*","https://www.site.com/*"],
                    "js": ["jquery-1.7.1.min.js","content.js"],
                    "run_at": "document_end"
                }]
}

您可以在名为
DOMSubtreeModified
的事件上添加侦听器。将一个函数绑定到它,每当发生更改时就会调用它

在jQuery中:

$('#ContentContainer').bind('DOMSubtreeModified',modifyComments);

更新:

如果事件多次触发,请在第一次期间删除事件绑定,并在特定超时后,可以调用modifyComments并重新绑定事件

function DOMModificationHandler(){
    $(this).unbind('DOMSubtreeModified.event1');
    setTimeout(function(){
        modifyComments();
        $('#ContentContainer').bind('DOMSubtreeModified.event1',DOMModificationHandler);
    },1000);
}

//after document-load
$('#ContentContainer').bind('DOMSubtreeModified.event1',DOMModificationHandler);

.event1
后缀是怎么回事?哦,我在粘贴我的另一个脚本的代码之前忘了删除这些东西。我使用了$(“#ContentContainer”).bind('domsubtreedinformed',function(){alert('changed');});在一次加载过程中,它会触发太多次“更改”-似乎所有子元素都是一个接一个地添加的,并且每次都会触发事件-如果我运行脚本编辑注释那么多-这不是浪费资源的好方法。有没有办法检查元素是否已更改,并且在过程中没有更改?正是这种逻辑与setTimeout和递归绑定unbidning在您第一次响应后,我试图自己编写代码,但您的解决方案工作得非常完美。谢谢,谢谢!这确实帮助我解决了一个独特的问题。