Javascript 如何判断dom节点何时添加到文档中?

Javascript 如何判断dom节点何时添加到文档中?,javascript,dom,Javascript,Dom,当dom节点被添加到文档中时,有什么好的方法可以得到警报吗?如果要在javascript中组合dom节点,通常先将它们组合在一起,这样就不会一直回流。但这意味着当添加元素时,它们在页面上不可见,这意味着关于它们的某些信息是不可访问/错误的。例如,offsetWidth在其添加到文档流之前将为0,而不管其添加后的宽度如何 因此,理想情况下,当一个节点被添加到文档中时,我希望能够获得一个事件,这样我就可以做一些需要offsetWidth的事情,以及其他需要呈现它的事情。在大多数情况下,使用突变观察者

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


因此,理想情况下,当一个节点被添加到文档中时,我希望能够获得一个事件,这样我就可以做一些需要
offsetWidth
的事情,以及其他需要呈现它的事情。

在大多数情况下,使用突变观察者来观察
文档应该是一个合理的工具(如果您要设置一个长期收听的听众,这可能是不合理的):


请注意,如果从文档中删除dom节点,然后重新插入,则上述代码将不会捕获该节点(但可以修改为).

请记住,变异观察者在IE和Opera中的功能非常有限(如果有的话)。目前看来,变异观察者在所有主要浏览器的最新版本中都有。但是,是的,支持早于11的IE版本还需要其他东西。你是对的。我应该更具体一些。我一直在尝试至少一代人回到IE时代。也就是说,我想在这种情况下,这是你不得不举手说“你能做什么?”
        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})