Javascript 检测浏览器DOM更改是否完成

Javascript 检测浏览器DOM更改是否完成,javascript,dom,resize,Javascript,Dom,Resize,我有一个JavaScript代码,它向已经存在的页面(DOM树)添加了新的XHTML。 我的页面元素是动态的,因此添加新元素会改变其他元素的大小。我有一个自定义的滚动条实现,它取决于这些大小,每次更改时都需要重置 我在插入新XHTML的语句后不久调用reset方法。但这似乎为时过早。有时滚动条调整不正确。如果在重置之前添加一些延迟,可以,但是我认为它太粗糙,不可靠的解决方案。 我需要: 检测给定DOM元素何时完成大小更改 或 检测整个DOM更改何时随重新布局一起完成 到目前为止,我什么也找不到。

我有一个JavaScript代码,它向已经存在的页面(DOM树)添加了新的XHTML。 我的页面元素是动态的,因此添加新元素会改变其他元素的大小。我有一个自定义的滚动条实现,它取决于这些大小,每次更改时都需要重置

我在插入新XHTML的语句后不久调用reset方法。但这似乎为时过早。有时滚动条调整不正确。如果在重置之前添加一些延迟,可以,但是我认为它太粗糙,不可靠的解决方案。 我需要:

检测给定DOM元素何时完成大小更改

检测整个DOM更改何时随重新布局一起完成


到目前为止,我什么也找不到。我知道情况对大多数人来说太复杂了,但我希望有人能帮上忙。谢谢

试试onload事件。

在检查dom状态的地方进行一些轮询怎么样?这是使用jQuery实现的,每当页面正文中的html以最长半秒的延迟更新时,就会调用
resetMyScrollbar

var lastDom = "";
function checkDomHash() {
  var newDom = $("body").html();
  if (newDom != lastDom) {
    resetMyScrollbar();
  }
  window.setTimeout(checkDomHash, 500);
}
在现实生活中,我会使用散列函数来比较散列,因为比较巨大的字符串是浪费时间的

var lastDomHash = "";
...
  var newDomHash = md5OrWhatever($("body").html());
  ...
编辑

或者你可以检查滚动条的高度

var lastHeight = 0;
...
  var newHeight = $("#my_element_id").outerHeight();
  ...

我认为这样我将只比较DOM内容,并知道它何时更改,也就是在重新布局完成之前。我已经尝试了DOMNodeInserted,它也有同样的用途,但没有帮助:(但你有一点,我想在目标滚动元素高度实际改变时进行一些检测,因为这正是我感兴趣的。