相关疑难解决方法(0)

是否有JavaScript/jQuery DOM更改侦听器?

基本上我想在DIV的内容发生变化时执行脚本.由于脚本是独立的(chrome扩展和网页脚本中的内容脚本),我需要一种方法来简单地观察DOM状态的变化.我可以设置投票,但这似乎很草率.

javascript jquery google-chrome-extension

382
推荐指数
5
解决办法
26万
查看次数

使用jQuery检测元素内容更改

change() 函数工作并检测表单元素的变化,但有没有办法检测DOM元素的内容何时被更改?

除非#content是表单元素,否则这不起作用

$("#content").change( function(){
    // do something
});
Run Code Online (Sandbox Code Playgroud)

我希望在执行以下操作时触发:

$("#content").html('something');
Run Code Online (Sandbox Code Playgroud)

此外html()append()功能没有回调.

有什么建议?

javascript jquery dom

111
推荐指数
7
解决办法
23万
查看次数

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

我需要一种有效的机制来检测DOM的变化.最好是跨浏览器,但如果有任何有效的方法不是跨浏览器,我可以使用故障安全的跨浏览器方法实现这些.

特别是,我需要检测会影响页面上文本的更改,因此需要任何新的,删除或修改的元素或对内部文本(innerHTML)的更改.

我无法控制正在进行的更改(它们可能是由于第三方javascript包含等),因此无法从这个角度进行处理 - 我需要以某种方式"监视"更改.

目前我实施了一个"quick'n'dirty"方法,body.innerHTML.length每隔一段时间检查一次.这当然不会检测导致返回相同长度的变化,但在这种情况下"足够好" - 这种情况发生的可能性非常小,并且在此项目中,未能检测到更改将不会导致丢失的数据.

问题body.innerHTML.length是它很贵.在快速浏览器上可能需要1到5毫秒,这可能会让事情陷入困境 - 我也在处理大量的iframe,而且这些都会增加.我很确定这样做的代价是昂贵的,因为innerHTML文本不是由浏览器静态存储的,并且每次读取时都需要从DOM计算.

我正在寻找的答案类型是从"精确"(例如事件)到"足够好"的任何东西 - 或许像innerHTML.length方法一样"quick'n'dirty",但执行速度更快.

编辑:我还应该指出,虽然检测已经修改过的精确元素会"很好",但这并不是绝对必要的 - 只要有任何改变这一事实就足够了.希望这能够扩大人们的反应.我将调查突变事件,但我仍然需要IE支持的后备,所以任何笨拙的,创造性的,非常方形的想法将是非常受欢迎的.

javascript dom mutation-observers mutation-events

46
推荐指数
3
解决办法
5万
查看次数