Tag: 突变观察员

检测/监测DOM变化的最有效方法?

我需要一个有效的机制来检测DOM的变化。 最好是跨浏览器,但如果有任何不是跨浏览器的有效手段,我可​​以实现这些与一个故障安全跨浏览器方法。 特别是,我需要检测会影响页面文本的更改,因此需要任何新的,删除或修改的元素,或者更改内部文本(innerHTML)。 我无法控制所做的更改(可能是由于第三方JavaScript包含等),所以无法从这个angular度来处理 – 我需要以某种方式“监视”更改。 目前我已经实现了一个“quick'n'dirty”方法, body.innerHTML.length隔一段时间检查body.innerHTML.length 。 这当然不会检测到导致返回相同长度的变化,但是在这种情况下“足够好” – 发生这种情况的可能性非常小,在这个项目中,不能检测到变化在丢失的数据。 body.innerHTML.length的问题是它很昂贵。 在一个快速的浏览器上,它可能需要1到5毫秒,这可能会让事情变得非常糟糕 – 我也在处理大量的iframe,这些都会加起来。 我很确定这样做的代价很大,因为innerHTML文本不是由浏览器静态存储的,每次读取时都需要从DOM中计算出来。 我正在寻找的答案的types是从“精确的”(例如事件)到“足够好”的任何东西 – 可能是innerHTML.length方法的“quick'n'dirty”,但执行速度更快。 编辑:我也应该指出,尽pipe检测已被修改的精确元素是“好的”,但这不是绝对必要的 – 只是事实上已经有任何改变就足够了。 希望这能扩大人们的反应。 我要去调查突变事件,但是我仍然需要IE支持的回退,所以任何有创意的,不寻常的想法都是非常受欢迎的。

元素添加到页面时的事件

这是之前在这里讨论的: 如何使用Jquery将一个元素添加到页面时执行一个操作? 响应者build议每当div添加到页面时触发一个自定义事件。 不过,我正在编写Chrome扩展程序,无法访问页面源代码。 我在这里有什么select? 我想在理论上,我可以使用setTimeout来持续search元素的存在,并添加我的动作,如果元素在那里。

检测DOM中的更改

当一些div或input被添加到html时,我想执行一个函数。 这可能吗? 例如,添加一个文本input,然后调用该函数。