私は、HTML文書に挿入できるノードを返すjavacript関数createMyElement
があると仮定します。 によって作成されたノードのコードは、文書内に挿入されるとすぐにグローバルdocument
のイベントをリスンする必要があります。DOMNodeInsertedIntoDocumentイベントを回避する
私が最初に試みたのは、作成時にノードDOMNodeInsertedIntoDocument
とDOMNodeRemovedFromDocument
のリスナーを追加して、必要なリスナーを追加して削除することでした。document
です。
しかし、突然変異イベントは今では廃止されており(ブラウザ間で信頼性が高いとは思われません)、より良い解決策を模索しています。
ノードの作成時にdocument
のイベントのリスナーを追加すると機能します。しかし、メモリとパフォーマンスのリークが発生するため、これは良い解決策ではないようです。ノードがドキュメントから再び削除され、もう必要なくなった後でも、document
のリスナー(およびノードへの参照)それでもなお存続するだろう。
私は理解していません - なぜ 'createMyElement'によって作成されたノードはドキュメント上のイベントを聴く必要がありますか?イベントリスニングは、通常、逆の方法で動作します。 – robertc
私のアプリケーションは、組み込みイベントシステムを使用してカスタムイベントを生成します。私の考えは、実際にグローバルなイベントであるため、これらのイベントをドキュメントにディスパッチすることでした。例えば。グローバルステートが変更された場合、イベントが送出されます。この状態を使用するすべてのノードは、この変更されたイベントをリッスンする必要があります。 – Marc