0

在另一个元素的开头(管道 | 是插入符号位置)尝试在空元素之前插入节点时,我注意到了这个问题。从此开始:

<p>|<span />Some text</p>

我在 Rangy 范围上使用 range.insertNode() 来粘贴一些文本,但在 Chrome 中我看到了这个结果,新节点出现在空之后<span>

<p><span />|INSERTED TEXTSome text</p>

而不是这样:

<p>|INSERTED TEXT<span />Some text</p>

请注意,这在 IE9 中似乎可以正常工作,并且如果插入未在<p>节点的开头完成,它也可以在 Chrome 中工作,例如:

<p>Some |<span />text</p>

结果是:

<p>Some |INSERTED TEXT<span />text</p>

这是一个简化的示例,但显示了我看到的问题。

为了澄清(如果我以错误的方式处理这个问题,有人可以提出替代方案)我正在尝试插入文本,并且一旦插入完成,光标总是出现在新插入文本的末尾。

例如<p>|Original Text</p>应该成为<p>INSERTED TEXT|Original Text</p>

但是,插入节点会导致插入符号紧挨在插入的文本之前放置(正如文档所述,它应该用于插入节点,因此没有抱怨)。我试图在插入后使用空<span>作为标记来恢复插入符号的位置(实际上我正在使用 Rangy 的选择保存和恢复模块来为我做这件事)。

4

1 回答 1

1

这是因为 WebKit 不认为 之前的位置<span>是有效的插入符号位置。它与这些 Webkit 错误有关:

如果范围符合您的预期,Rangy 将允许您将节点插入到您想要的位置,但如果您从选择中获得了范围,那么该范围将反映浏览器对选择的想法。可能有办法解决它,但我不太清楚你到底想要做什么。

于 2012-05-30T08:37:38.763 回答