繁体   English   中英

您如何知道dom节点何时添加到文档中?

[英]How can you tell when a dom node gets added to the document?

将dom节点添加到文档时,有什么好方法可以引起警报? 如果要在javascript中将dom节点放在一起,通常先将它们放在一起,然后再进行,这样就不会一直在进行重排。 但这意味着添加元素时,它们在页面上不可见,这意味着有关它们的某些信息不可访问/错误。 例如, offsetWidth在添加到文档流中之前将为0,而不管其添加后的宽度如何。

因此,理想情况下,我希望有一种在将节点添加到文档时获取事件的方法,这样我就可以执行需要offsetWidth以及需要呈现它的其他操作。

在大多数情况下,使用变异观察者来观察document应该是一种合理的工具(如果您要设置旨在长时间监听的监听器,则可能不合理):

        var observer = new MutationObserver(function(mutations) {
            mutations.forEach(function(mutation) {
                if(mutation.target.contains(block.domNode)) {
                    // do your thing, then..
                    observer.disconnect()
                }
            })
        })
        observer2.observe(document, {childList: true, subtree: true})

请注意,如果将dom节点从文档中删除,然后重新插入,则上面的代码将无法捕获(但可以对其进行修改)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM