我在very old comment讨论nextSibling
值时从@Bergi中读到了这句话:
x.nextSibling可能不是跨度,而是换行文本 img和span元素之间的节点
@Bergi所指的是一些脚本,用于选择相当简单的HTML中的第一个元素,并找到nextSibling
:
<img src="something">
<span>
浏览器是否会在元素节点之间的DOM中插入“换行文本节点”?我真正想要理解的是这篇关于使用ProseMirror将文档模型序列化为HTML的讨论中的注释:
HTML几乎总是可以用来完全代表文档DOM。 我们遇到过一个例外:兄弟文本节点。之前 使用ProseMirror我们发现拥有兄弟文本很重要 节点,因此我们将HTML序列化为JSON以存储在数据库中。 出于兼容性原因,我们现在仍然这样做,但考虑到我们 不再需要兄弟文本节点,这可能会消失 我们的文件格式的下一个版本。
该线程中的其余讨论是浩繁的,与此问题无关,所以我没有链接它。我认为这位作者之所以说HTML在兄弟文本节点的情况下无法镜像DOM的原因是因为换行节点会自动插入到DOM中(而不是用HTML表示)。这准确吗?
答案 0 :(得分:1)
我认为你提到的“隐藏字符”的概念并不准确。 问题是nextSibling返回字面上 dom上的下一个兄弟,这并不意味着它将成为dom上的下一个元素。 如果您想尝试,请删除所有换行符并重试,或者只使用 nextElementSibling 。