在HTML文本框中扩展JS范围/选择

时间:2013-10-03 11:24:15

标签: javascript html dom range selection

给定一个用户选择的文本框,我希望能够用JS扩展选择(通过单词或字符)。

我知道在某些浏览器中我可以使用window.getSelection();(请参阅here)获取当前选择,而在FireFox中您可以使用selection.modify("extend", "forward", "word");还有一个TextRange对象,即IE浏览器supports

这是一项要求,因为我需要检查选择并将其与之前和之后的文本进行比较(显然我将在完成后重置选择)。

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

这篇文章很有意思,但不是很想要:Selection ranges in webkit (Safari/Chrome)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以通过以下方式更改有效选择:

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

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