javascript - 使用 Rangy trim 所选内容中的空白

标签 javascript rangy

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

我已经创建了一个范围选区,并在选区上设置了范围。看来我想使用的函数是 setStartAfter(node) 但它没有为我返回任何内容。

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

谢谢

最佳答案

一般来说,这有点棘手,因为空格字符可能不是与“abcd”同一节点的一部分。 Rangy 1.2 没有任何特殊的方法来帮助您:Range 实现与 DOM Range 相同,只是有一些扩展,因此问题与没有 Rangy 时的情况没有什么不同。如果所有文本都在单个文本节点内,例如“123 abcd efg”,并且用户选择了“abcd”,则您需要执行类似的操作,假设您在变量中引用了文本节点名为 textNode 的选择范围位于名为 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>

关于javascript - 使用 Rangy trim 所选内容中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337260/

相关文章:

javascript - Angular - 如何优化代码以缩短加载时间?当前加载时间为 2.45 秒

javascript - 在 for 循环中删除动画后的多个元素

rangy:执行尽可能最小的扩展,以便 canSurroundContents() = true

javascript - 在 Opera 中从 iframe 调用父窗口上的方法失败

javascript - 我们如何用一组单词填充一组 <span> </span> ?

javascript - 使用 range 操作选择

javascript - 由于错误 800a025e,无法完成操作

javascript - 替换 contenteditable div 中的 innerHTML

javascript - 用户选择 : none behaves differently in Safari

javascript - 如何解决 react 类型错误: Cannot read properties of undefined (reading 'name' )