在 HTML 中表示文档 DOM:同级文本节点

Representing Document DOM in HTML: Sibling Text Nodes

我在 very old comment 讨论 nextSibling 值时从@Bergi 那里读到这个声明:

x.nextSibling will likely not be the span, but the line-break text node between the img and the span elements

@Bergi 所指的示例是 select 相当简单 HTML 中第一个元素的一些脚本,然后找到 nextSibling:

<img src="something">
<span>

浏览器会在元素节点之间的 DOM 中插入 "line-break text node" 吗?我真正想了解的是关于使用 ProseMirror 将文档模型序列化为 HTML 的旧讨论中的评论:

HTML can almost always be used to fully represent the document DOM. There is one exception we have come across: sibling text nodes. Before using ProseMirror we found it was important to have sibling text nodes, so we serialize the HTML to JSON for storing in the database. We still do that now, for compatibility reasons, but given that we don’t need sibling text nodes any more, this will likely be gone in the next version of our file format.

该线程中的其余讨论内容很多,与这个问题无关,所以我没有 link。我认为这位作者说 HTML 不能在兄弟文本节点的情况下镜像 DOM 的原因是因为换行符节点会自动插入到 DOM 中(而不是在 HTML 中表示)。这准确吗?

我觉得你说的"hidden characters"这个概念是不准确的。 问题是 nextSibling returns 字面意思 dom 上的下一个兄弟姐妹,这并不意味着它将成为下一个 元素 在 dom 上。 如果您想尝试,请删除所有换行符并重试,或者直接使用 nextElementSibling