如何解决为什么 DOM 规范不能识别扁平树?
概括地说,DOM spec 定义了影子树的概念如下:
- 阴影树是与当前文档(光树)不同的节点树。
- 它的根(阴影根)通过宿主引用与光树节点相连——这与后代/祖先关系不同DOM 树。
- 此外,影子树可以有槽节点,而它们又可以通过分配的节点槽表)相连 关系(再次被认为与 DOM 树结构区分开来)。
我觉得这张照片有点牵强。似乎我们实际上没有两种不同的树(光和影),而是所有三种。实际上,用户代理呈现另一个名为扁平树的代理。在这棵树中,影子根是其宿主的子节点,插槽是其插槽表的祖先:
有人可能会争辩说扁平化树只是一个“虚拟想法”。但是,它用于 CSS 和事件侦听,可能这一事实证明了它的用处。
松散地,影子树被视为影子主机的内容 而不是其正常的光树内容。然而,它的一些光 树孩子可以通过分配他们被“拉入”影子树 到插槽。 这会导致它们被视为插槽的子项 CSS 目的。 (CSS non-normative explanation)
当物质状态可以用单个扁平树来描述时,是否有任何理由引入影子树的概念,尤其是槽分配节点,其中节点与众所周知的后代/祖先引用相连,而不是具有特殊的引用命名为“分配的节点”?当然,如果我们渴望封装,像 findElementById()
这样的 API 函数会保持扁平树的“影子”子树完好无损。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。