我正在使用Polymer的ShadowDOM和MutationObserver polyfills,并需要做到以下几点:
- 检测HTMLCanvasElement元素何时被插入,以便我可以执行布局(当从DOM树中删除时,它的宽度和高度通过offsetWidth / offsetHeight是不确定的) - 检测元素何时被删除,以便我可以停止它的requestAnimationFrame循环
传统上,在没有Shadow DOM的情况下,这样操作:
1. 将MutationObserver附加到document.body并对任何canvas元素执行querySelectorAll 2. 在这些元素上执行某些方法,例如layoutNode 3. 如果在动画循环中document.body.contains(node)返回false,则该节点已从DOM中删除
在使用Shadow DOM时,我可以通过对已添加根的所有元素进行扫描(似乎非常低效),并在任何继承自HTMLCanvasElement的shadow dom节点上执行layoutNode来绕过shadow dom边界。
如何从canvas的动画循环中检查此节点仍在DOM树中?
是否有更好的API可用于检测DOM节点何时被插入?
(注意:使用Polymer的CustomElements polyfill时,MutationEvents不可用。)
- 检测HTMLCanvasElement元素何时被插入,以便我可以执行布局(当从DOM树中删除时,它的宽度和高度通过offsetWidth / offsetHeight是不确定的) - 检测元素何时被删除,以便我可以停止它的requestAnimationFrame循环
传统上,在没有Shadow DOM的情况下,这样操作:
1. 将MutationObserver附加到document.body并对任何canvas元素执行querySelectorAll 2. 在这些元素上执行某些方法,例如layoutNode 3. 如果在动画循环中document.body.contains(node)返回false,则该节点已从DOM中删除
在使用Shadow DOM时,我可以通过对已添加根的所有元素进行扫描(似乎非常低效),并在任何继承自HTMLCanvasElement的shadow dom节点上执行layoutNode来绕过shadow dom边界。
如何从canvas的动画循环中检查此节点仍在DOM树中?
是否有更好的API可用于检测DOM节点何时被插入?
(注意:使用Polymer的CustomElements polyfill时,MutationEvents不可用。)