2

给定用户已在其中进行选择的文本框,我希望能够使用 JS 扩展选择(通过单词或字符)。

我知道在某些浏览器中我可以使用window.getSelection();(参见此处)来获取当前选择,并且在 FireFox 中您可以使用IE支持selection.modify("extend", "forward", "word");的 TextRange 对象。

这是一个要求,因为我需要检查选择并将其与之前和之后的文本进行比较(所以很明显,当我完成后我会重置选择)。

我需要支持 IE9(虽然也许我可以摆脱 IE10)、Chrome 和 FF,而且我有 JQuery 但可以使用任何第三方 JS 库。

这篇文章很有趣,但不是我们想要的:webkit (Safari/Chrome) 中的选择范围

4

2 回答 2

2

Textareas 有自己的选择 API,与页面或contenteditable元素中的常规选择 API 不同。这很简单:一个 textarea 具有可读和可写selectionStartselectionEnd属性,它们分别代表 textarea 值内的选择开始和结束位置。IE <= 8 对此有不同的 API,但 IE 9 支持它。

您没有得到等价物,Selection.modify()但无论如何您可能都不需要它,因为使用 textarea 的值通常很容易。

MDN:https ://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement

于 2013-10-03T15:14:06.303 回答
1

您可以通过以下方式更改活动选择:

var selection = window.getSelection();
var range = selection.getRangeAt(0);
range.setStart(range.startContainer, 0); // set to the beginning
selection.setSingleRange(range);

修改范围不会更新 UI,您必须设置范围。

于 2013-10-03T11:30:34.530 回答