1

正在选择的 html:

some te<b>xt here is bold</b>ed, I guess
              |______________________|  <- the selection range

所以,选择的 .toHtml() 是这样的:

<b>ere is bold</b>ed, I gue

但这不在原始文件中。

所以,我想做的是扩展选择,使其包含整个 BOLD 标记。

这很容易检测到,因为您只需要进行测试

a = rangy.getSelection()
a.anchorNode.parentElement != a.focusNode.parentElement

该文档指出范围广泛的范围有一个setStartBefore(Node)方法:http ://code.google.com/p/rangy/wiki/RangyRange

所以,我得到了当前范围

b = a.getRangeAt(0)

并尝试 setStartBefore :

b.setStartBefore(a.anchorNode.parentNode)

并且由于我在控制台中执行所有这些操作,因此我会立即收到反馈说

undefined

什么会导致这种情况,以及我将如何解决它以找到我想要解决的问题的解决方案?

更新:根据 Tim Down 的建议,我尝试了以下方法:
在此处输入图像描述 原文:
在此处输入图像描述

它应该扩大到包括质量 Ef它不应该吗?

更新 2:

解决方案(根据 Tim Down) 在此处输入图像描述

4

1 回答 1

3

您需要重新选择范围:

a.setSingleRange(b);

顺便说一句parentElement,它并没有得到普遍支持:它仅从 IE 开始,最近才进入DOM4 规范,并且尚未在 Firefox 中得到支持(显然,支持将在 Firefox 9.0中提供)。您将需要基于parentNodeand的解决方法nodeType

于 2011-11-30T10:34:17.157 回答