假设我有一个javascript函数createMyElement
,它返回一个可插入HTML文档的节点。
为了正常运行,createMyElement
创建的节点的代码必须至少在文档中插入事件后立即监听全局document
上的事件。
我的第一次尝试是在创建时向节点添加DOMNodeInsertedIntoDocument
和DOMNodeRemovedFromDocument
个侦听器,依次在document
添加和删除所需的侦听器。
但是,现在不推荐使用突变事件(并且似乎不能跨浏览器可靠地工作),所以我正在寻找更好的解决方案。
在节点创建时添加document
处事件的侦听器将起作用。但是,这似乎不是一个好的解决方案,因为它会造成内存和性能泄漏:即使在再次从文档中删除节点并且不再需要节点之后,{I上的侦听器(及其对节点的引用)也是如此{1}}仍然存在。
答案 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中的新自定义元素,这会为自定义元素提供一个insertedCallback
和removedCallback
。