修剪与Rangy选择的空白

时间:2015-02-05 06:07:19

标签: javascript rangy

我正在使用Rangy 1.2。假设用户选择文本“abcd”。我试图将选择减少为“abcd”。

我已经创建了一个Rangy选项,并在选择范围内。看起来我想要使用的函数是setStartAfter(node),但它不会为我返回任何内容。

我一直在关注这些文档:https://code.google.com/p/rangy/wiki/RangyRange

由于

1 个答案:

答案 0 :(得分:4)

通常,这有点棘手,因为空格字符可能不是“abcd”的同一节点的一部分。 Rangy 1.2没有任何特殊方法可以帮助你:Range实现与DOM Range相同,只有一些扩展,所以问题与没有Rangy的情况没有什么不同。如果所有文本都在单个文本节点中,例如“123 abcd efg”,并且用户选择了“abcd”,则需要执行类似的操作,假设您在变量中引用了文本节点名为textNode的{​​{1}}和range变量中的选择范围:

range.setStart(textNode, 4);
rangy.getSelection().setSingleRange(range);

然而,Rangy 1.3有一个TextRange module来处理范围和选择的文本。有了它,您的问题可以通过

解决
rangy.getSelection().trim();

演示:

<script src="https://rawgit.com/timdown/rangy-release/master/rangy-core.js"></script>
<script src="https://rawgit.com/timdown/rangy-release/master/rangy-textrange.js"></script>

<input type="button" onmousedown="rangy.getSelection().trim(); return false" value="Trim selection">
<div contentEditable="true">
  Please select something in here and press the button abcd efgh
</div>