0

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

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

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

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

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

4

2 回答 2

0

使用一系列函数回调按需脚本回调来序列化事件。

于 2012-09-12T18:07:05.647 回答
0

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

因此,我自己的问题的一个简单答案是简单地使用文档上的变异观察者来监听要插入或删除的节点。

然而,更好的方法是使用来自https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.htmlinsertedCallback的新自定义元素,它removedCallback为自定义元素。

于 2013-05-21T14:08:56.447 回答