3

我有一个 chrome 扩展,它在页面加载后将 iFrame 注入到 dom 中。

我也想听听 dom 的变化,但我想忽略DOMSubtreeModified由于我注入 iFrame 而被触发的 。所以任何事件,无论是在我注入 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 属性可能已经存在,所以我仍然不知道圆顶变化的来源。

4

1 回答 1

1

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

于 2012-10-25T00:13:47.053 回答