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