Javascript 观察DOM属性的变化

Javascript 观察DOM属性的变化,javascript,dom,Javascript,Dom,我想知道任意对象的某些属性何时改变 我读了这个问题的答案:“这似乎暗示了使用getter和setter的解决方案。但是,我试图使用它来捕获对DOM对象的id和style属性的更改,但它不起作用。我观察到的一件奇怪的事情是,只要我为id字段创建一个setter,原始id字段就会消失,因此读取或写入值的尝试就会失败。由于该属性可能是DOM属性,有时不是简单的变量,因此我不能简单地创建自己的变量,因为我不能任意地重新创建生成值的任何底层功能 我真正想做的就是检测属性何时更改,并透明地传递更改 经过进一

我想知道任意对象的某些属性何时改变

我读了这个问题的答案:“这似乎暗示了使用getter和setter的解决方案。但是,我试图使用它来捕获对DOM对象的
id
style
属性的更改,但它不起作用。我观察到的一件奇怪的事情是,只要我为
id
字段创建一个setter,原始
id
字段就会消失,因此读取或写入值的尝试就会失败。由于该属性可能是DOM属性,有时不是简单的变量,因此我不能简单地创建自己的变量,因为我不能任意地重新创建生成值的任何底层功能

我真正想做的就是检测属性何时更改,并透明地传递更改

经过进一步的研究,我找到了这一页。但是,虽然此监视功能似乎可以让我看到对象的属性何时更改,但实际的属性最终根本没有更改。

您可以使用它监视属性的更改。这适用于获取/设置标记属性的DOM属性。与突变事件相比,突变观察者在实际突变之后运行很长时间,而不是立即运行。我读过突变观察者的表现比突变事件更好


您还提出了在重新定义属性时如何访问原始getter/setter的问题。如果您使用突变观察者解决方案,您就不必担心这个问题。在某些浏览器中,如Firefox,像
id
这样的属性的原始功能也作为getter/setter实现。例如,如果运行
Object.getOwnPropertyDescriptor(Element.prototype,'id').set.call(myElement,'asdf')
,即使重新定义了
myElement.id
,它也会像
myElement.id='asdf'
。有些浏览器不是这样做的。例如,Chromium正在实现Web IDL。

尝试使用事件,但不跨浏览器。@sabithpocker仅适用于属性更改,而不适用于属性更改。您可以提供一个示例场景,说明您正在尝试执行的操作吗?@sabithpocker我想成为页面上的一个更改,以触发另一个更改,当创建第二个更改的函数不知道什么可能导致原始更改时,我建议您用一个最小的示例更新问题。如果您正在寻找一些数据绑定或观察者模式,或者只是在观察DOM元素的变化,我会感到困惑。希望有人能帮忙,我现在就要离开我的办公桌了。