检测Chrome扩展程序之外生成的DOM更改

时间:2012-10-24 23:28:46

标签: javascript jquery google-chrome-extension

我有一个Chrome扩展程序,在页面加载后将iFrame注入dom。

我也想听dom更改,但我想忽略因注入iFrame而被解雇的DOMSubtreeModified。因此,在我注入iFrame之前或之后的任何事件,我想要捕获。

以下是我正在查看dom更改的内容脚本的基础知识:

var processRequest = function() {
  $('body').bind('DOMSubtreeModified', DOMModificationHandler);
  return 'complete';
}

function DOMModificationHandler() {
  $(this).unbind('DOMSubtreeModified');
  setTimeout(function() {
    //skip this if it was my iFrame injection that caused this event
    //someLocalFunction();
    $('#ContentContainer').bind('DOMSubtreeModified', DOMModificationHandler);
  },1000);
}

DOMModificationHandler开火时,我能做些什么来区分我的注射和其他dom事件?

**更新:我考虑过向iFrame添加某种类型的id或数据元素,但这只是告诉我它在那里,而不是导致该事件的iFrame。特别是当有一个AJAX请求更新了dom的一部分时。任何id或data属性可能已经存在,所以我仍然不知道圆顶更改的来源。

1 个答案:

答案 0 :(得分:1)

结帐http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified,然后查看http://www.w3.org/TR/DOM-Level-3-Events/#events-event-type-target。您应该能够根据目标过滤事件。在这种情况下,目标是要修改的父子树。