0

createMyElementHTMLドキュメントに挿入できるノードを返すjavascript関数があると仮定します。

正しく機能するために、によって作成されたノードのコードは、少なくともドキュメントに挿入されるとすぐcreateMyElementに、グローバル上のイベントをリッスンする必要があります。document

私の最初の試みは、作成時にノードにリスナーを追加し、必要なリスナーを順番に追加および削除することでしDOMNodeInsertedIntoDocumentた。DOMNodeRemovedFromDocumentdocument

ただし、ミューテーションイベントは現在廃止されているため(ブラウザ間で確実に機能しないようです)、より良い解決策を探しています。

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 に答える