我正在使用Rangy 1.2。假设用户选择文本“abcd”。我试图将选择减少为“abcd”。
我已经创建了一个Rangy选项,并在选择范围内。看起来我想要使用的函数是setStartAfter(node),但它不会为我返回任何内容。
我一直在关注这些文档:https://code.google.com/p/rangy/wiki/RangyRange
由于
答案 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>