Polymer の ShadowDOM とMutationObserver
polyfill を使用しており、次のことを行う必要があります。
- レイアウトを実行できるように a が挿入されたことを検出し
HTMLCanvasElement
ます (その幅と高さは、DOM ツリーから切り離された場合は不定offsetWidth
ですoffsetHeight
) requestAnimationFrame
要素が削除されたことを検出して、ループを停止できるようにする
従来、Shadow DOM を使用しない場合、これは次のように機能します。
- キャンバス要素に取り付け
MutationObserver
てdocument.body
実行するquerySelectorAll
layoutNode
たとえば、これらの要素に対して何らかのメソッドを実行します- アニメーション ループで
document.body.contains(node)
が返された場合false
、ノードは DOM から削除されています。
Shadow DOM を使用する場合、ルートが追加された DOM 内のすべての要素に対してスキャンを実行し (非常に非効率的と思われる)、Shadow DOM の境界を回避することができlayoutNode
ますHTMLCanvasElement
。
このノードがまだ DOM ツリーにあることをキャンバスのアニメーション ループから確認するにはどうすればよいですか?
DOM ノードが挿入されたことを検出するために使用するより良い API はありますか?
(注: MutationEvents は、Polymer の CustomElements ポリフィルを使用すると利用できません。)