绕过DOMNodeInsertedIntoDocument事件

时间:2011-06-20 08:55:02

标签: javascript html5 dom w3c mutation-events

假设我有一个javascript函数createMyElement,它返回一个可插入HTML文档的节点。

为了正常运行,createMyElement创建的节点的代码必须至少在文档中插入事件后立即监听全局document上的事件。

我的第一次尝试是在创建时向节点添加DOMNodeInsertedIntoDocumentDOMNodeRemovedFromDocument个侦听器,依次在document添加和删除所需的侦听器。

但是,现在不推荐使用突变事件(并且似乎不能跨浏览器可靠地工作),所以我正在寻找更好的解决方案。

在节点创建时添加document处事件的侦听器将起作用。但是,这似乎不是一个好的解决方案,因为它会造成内存和性能泄漏:即使在再次从文档中删除节点并且不再需要节点之后,{I上的侦听器(及其对节点的引用)也是如此{1}}仍然存在。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

由于我最初问过我的问题,突变事件的替代品,即http://www.w3.org/TR/domcore/#mutation-observers中定义的变异观察者,已经在许多浏览器中实现。

因此,对我自己的问题的简单回答是,只需在文档上使用变异观察器来监听要插入或删除的节点。

然而,更好的方法是使用https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html中的新自定义元素,这会为自定义元素提供一个insertedCallbackremovedCallback

相关问题