html元素的某些属性在它位于HTML DOM(例如offsetHeight或offsetWidth)之前无法计算出来。如果我是createElement('div')并且想要使用div的offsetHeight,那么当这个元素被附加到文档时会触发一个事件,以便我知道我现在可以使用offsetHeight吗?
答案 0 :(得分:1)
DOMNodeInserted
可能就是你要找的东西。
有关DOM事件的详细信息,请参阅https://developer.mozilla.org/en/DOM/DOM_event_reference
答案 1 :(得分:0)
不,我认为没有事件发生。但是您可以将属性附加到新创建的元素,告诉您的脚本是否附加了它。你可以这样做:
function appendSignal(el,toElement){
to.appendChild(el);
el.isAppended = true;
}
var nwdiv = document.createElement('div');
// do stuff with nwdiv
appendSignal(nwdiv,document.body);
//doing other stuff
if (nwdiv.isAppended) {
/* nwdiv.offsetHeight should be available... */
}
答案 2 :(得分:0)
有些浏览器会在您将这些属性添加到DOM后立即初始化这些属性。它需要在DOM中,因此可以应用CSS规则。
所以你不需要接收一个事件,只要在创建它时通常就可以将元素添加到DOM中。
但是如果你发现你需要的属性是而不是立即初始化,你可以将该代码分成另一个函数(就像你对事件处理程序一样)并使用setTimeout(otherFunction, 0)
调用它。没有延迟。 JavaScript执行完毕后,浏览器会相应地响应您的DOM更改,然后立即调用您的其他函数。这有点像举办活动,但自己解雇。