检测浏览器 DOM 更改完成
我有一段 JavaScript 代码,可以将新的 XHTML 添加到现有页面(DOM 树)中。 我的页面元素是动态的,因此添加新元素会导致其他元素大小发生变化。我有一个自定义滚动条实现,它取决于这些大小,并且每次更改时都需要重置。
我在插入新 XHTML 的语句后不久调用重置方法。但这似乎还为时过早。有时滚动条无法正确调整。如果我在重置之前添加一些延迟,这是可以的,但我认为它太粗糙且不可靠的解决方案。
我需要:
检测给定 DOM 元素何时完成大小更改
或
检测整个 DOM 更改何时完成以及重新布局。
到目前为止我什么也没找到。我知道对于大多数人来说情况太复杂,但我希望有人能够提供帮助。谢谢!
I have a JavaScript code that adds new XHTML to already existing page (DOM tree).
My page elements are dynamic, so adding new elements causes changes in other elements size. I have a custom scroll bar implementation that depends on those sizes and needs to be reset every time they change.
I call the reset method shortly after the statement that inserts the new XHTML. But it seems that this is too soon. Sometimes the scrollbar does not adjust properly. If I add some delay before reset, it is OK, but I consider it too crude and unreliable solution.
I need to either:
Detect when given DOM element completes change of size
or
Detect when the entire DOM change finishes along with the re-layout.
So far I could not find nothing. I know the situation is too complex for most people, but I hope somebody will be able to help. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
进行一些轮询来检查 dom 的状态怎么样?这是使用 jQuery 的,只要页面主体中的 html 以最多半秒的延迟更新,就会调用
resetMyScrollbar
。在现实生活中,我会使用哈希函数并比较哈希值,因为比较巨大的字符串是浪费的。
编辑
或者您可以检查滚动条的高度。
How about some polling where you check the state of the dom? This is with jQuery and will call
resetMyScrollbar
whenever the html in the page body updates with a maximum half second delay.In real life I'd use a hash function and compare hashes as comparing huge strings is wasteful.
Edit
Or you could check the height of whatever the scroll bar is for.
尝试 onload 事件。
Try the onload event.