是否可以使用MutationObserver观察HTML元素的offsetTop属性

是否可以使用MutationObserver观察HTML元素的offsetTop属性,html,mutation-observers,Html,Mutation Observers,在HTML页面中,一个元素可能由于很多原因而被重新定位——元素的样式更改(边距、填充、高度等)、其他元素的插入或删除,或者其他元素的样式更改 我需要确保jQuery对话框始终位于锚点旁边,因此如果锚点移动,对话框也会移动。但是,我不控制对话框显示的页面(我动态地注入一些JS)。我认为我可以通过MutationObserver观察元素(及其所有父元素)的offsetTop属性的变化,但offsetTop变化似乎不会引发突变事件 有人能确认偏移顶部的变化不会引发突变事件,或者告诉我如何观察偏移顶部吗

在HTML页面中,一个元素可能由于很多原因而被重新定位——元素的样式更改(边距、填充、高度等)、其他元素的插入或删除,或者其他元素的样式更改

我需要确保jQuery对话框始终位于锚点旁边,因此如果锚点移动,对话框也会移动。但是,我不控制对话框显示的页面(我动态地注入一些JS)。我认为我可以通过MutationObserver观察元素(及其所有父元素)的offsetTop属性的变化,但offsetTop变化似乎不会引发突变事件

有人能确认偏移顶部的变化不会引发突变事件,或者告诉我如何观察偏移顶部吗

或者,如果有其他技术来确保对话框保持其锚定状态,我洗耳恭听——但请注意,我不控制页面本身,只控制对话框:)

小提琴

在下面的小提琴中,单击“边距”按钮修改锚元素的边距顶部,导致
style
属性更改,从而触发重新定位。但是,单击其他按钮不会导致重新定位,即使offsetTop属性已更改。我需要另外两个按钮来调用
position()
函数

约束

我不控制HTML或Javascript——我的JSGET被注入到其他人的页面中,所以我所能做的非常有限

回退


我的备用解决方案是每隔100ms左右轮询
窗口.anchor.offsetTop
,如果它发生变化,则重新定位。然而,轮询很糟糕,所以如果我能对事件做出反应,那会更好。

offsetTop
无法通过
MutationObserver
观察到,因为只能观察到HTML结构的更改。因此,任何在页面的实际HTML中可见的HTML数据

例如,您实际想要的是观察页面的整个结构,因为任何数量的事情都可能影响弹出窗口的位置,并且在页面发生任何更改时,您都需要重新定位弹出窗口。请记住,仍然有一些方法可以在不修改页面HTML的情况下修改页面的呈现状态,如CSS动画和悬停效果等。用这种解决方案是无法解决这些问题的