有一些html元素的某些属性,直到位于HTML DOM(例如offsetHeight或offsetWidth)中才能算出来。如果我创建了元素('div')并且想要使用div的offsetHeight,那么在将此元素附加到文档时是否会触发事件,以便我知道现在可以使用offsetHeight?事件告诉你一个元素已被追加到文档中?
回答
DOMNodeInserted
可能是你在找什么。 有关DOM事件的详细信息,请参阅https://developer.mozilla.org/en/DOM/DOM_event_reference
不,我不认为有这样的事件。但是你可以追加一个属性到新创建的元素,告诉你的脚本它被追加了。你可以这样做:
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... */
}
有这样的事件。请参阅ThiefMaster的回答。 – 2012-04-16 09:57:44
对,忘了那个。这不适用。虽然 – KooiInc 2012-04-16 10:04:55
某些浏览器会在您将其添加到DOM后立即初始化这些属性。它需要在DOM中才能应用CSS规则。
所以你不需要接收一个事件,只要在创建DOM时添加元素通常就可以工作。
但是,如果你找到你所需要的属性是不立即初始化,您可以在代码中分离到另一个功能(就像你会为一个事件处理程序),它使用setTimeout(otherFunction, 0)
无延迟调用。一旦JavaScript完成执行,浏览器将相应地响应您的DOM更改,然后立即调用您的其他函数。这就像有事件,但自己开火。
- 1. 如何告诉JavaScript在一个元素被加载后执行一个函数?
- 2. 事件添加元素插入文档
- 3. 将数据追加到一个JSON特定元素文件
- 4. 追加一个元素后,事件点击不在jquery中的追加元素上工作
- 5. 追加到zip存档中的文件
- 6. 追加一个HTML元素到当前元素以JavaScript
- 7. 的元素追加到另一个和追加他们都到另一个元件
- 8. 元素添加到文档时是否存在jQuery事件?
- 9. jQuery - 追加一个事件处理程序到已有的点击事件
- 10. JS事件一旦元素被添加到DOM?
- 11. 将元素追加到元素
- 12. 如何将元素追加到正文?
- 13. 用另一个文件追加元素,用ID?
- 14. 追加到BODY元素
- 15. 告诉一个实例是否已被销毁
- 16. Javascript:有没有办法告诉div何时被添加到元素?
- 17. 如何将jQuery事件追加到新元素?
- 18. 追加多个文件到一个(awk)
- 19. 追加到一个已经存在的文件nodejs?
- 20. 当你移除()一个元素并在其他地方追加()时,事件是否会在jQuery中丢失?
- 21. 你能告诉我这个警告吗?
- 22. jQuery从一个类追加元素
- 23. 试图追加一个元素的jQuery
- 24. 追加每个元素
- 25. jQuery:追加多个元素
- 26. 哪个事件告诉您设备已成功启动
- 27. 检查一个元素已被选中/标签到
- 28. 追加1D numpy数组到新行中的新元素文件
- 29. 事件 - 已编辑文档
- 30. 得到它已被追加之后的jQuery .append元素的性质
DOMNodeInserted在目前的浏览器中可以正常工作,但在IE9中不能正常工作,并且可能不会在几年后发布的浏览器中使用,因为DOM突变事件已被弃用,并将被替换为[突变观察者](http:///www.w3.org/TR/dom/#mutation-observers)。尽管现在你可以做的最好。 – 2012-04-16 09:16:21
@TimDown,你能指点我的文章吗?它说HTML和JavaScript的这些特性将被弃用(希望看到什么)。另外,在这种情况下,你会推荐做什么?什么是突变观察者事件?我现在可以/如何使用突变观察者? – Derek 2012-04-16 10:33:06
@Derek:[DOM3中的突变事件](http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents)提到突变事件被弃用,[正如当前的工作 - 进展DOM4](http://www.w3.org/TR/dom/#goals)。我从[WHATWG](http://www.whatwg.org/mailing-list)和[W3C public-webapps](http://lists.w3.org/Archives/Public/public-webapps/) ) 邮件列表。回覆。突变观察者,我相信他们只能在最近的WebKit浏览器中使用,所以你可以尝试一下,但并不真正在普通网络上使用它们。 – 2012-04-16 11:12:19