我有一个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属性可能已经存在,所以我仍然不知道圆顶更改的来源。
答案 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。您应该能够根据目标过滤事件。在这种情况下,目标是要修改的父子树。