给定一个用户选择的文本框,我希望能够用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)
答案 0 :(得分:2)
Textareas有自己的选择API,不同于页面内或contenteditable
元素中常规选择的API。这很简单:textarea具有可读写selectionStart
和selectionEnd
属性,分别代表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,您必须设置范围。