1

这是我的代码:

var range = editor.selection.getRng();
range.setStart(range.startContainer, 2);

对于 Chrome,一切正常,但在 Firefox 中,我收到错误索引或大小为负数或大于允许的数量。在 Chrome 中,range.startContainer 是一个文本元素,而在 Firefox 中,它是 HtmlParagraphElement。

为什么在 FF 中会发生这种情况以及如何将此段落标签转换为文本?

我试过了:

range.setStart(range.startContainer.firstChild, 2);

但它不起作用。

4

1 回答 1

2

火狐的startContainer报道没有错,只是不同而已。startContainer理论上可以引用任何类型的节点,并且不同的浏览器如何选择表示某些类型的选择存在一些变化。

如果您想在编辑器的文本内容中根据字符偏移量来做所有事情,您可以使用类似这个 answer的东西。如果您只是想要针对这种特殊情况的解决方案,我建议您只需检查startContainer' 节点类型。请注意,以下假设您的元素的第一个子<p>元素是文本节点:

var range = editor.selection.getRng();
var startNode = range.startContainer;
if (startNode.nodeType !== 3) {
    startNode = startNode.firstChild;
}
range.setStart(startNode, 2);
于 2012-10-16T08:39:04.917 回答