最初是因为textarea赋值后,focus光标一直定位到第一个文字的bug,搜之,发现有这样一个API:HTMLInputElement.setSelectionRange,可以设置一个input元素中的文本选中内容的起始位置和结束位置。

inputElement.setSelectionRange(selectionStart, selectionEnd, [optional] selectionDirection);

参数
    selectionStart
    被选中的第一个字符的位置。
    selectionEnd
    被选中的最后一个字符的 下一个 位置。
    selectionDirection (可选)
    一个指明选择方向的字符串,有"forward","backward"和"none" 3个可选值, 分别表示"从前往后", "从后往前"和"选择方向未知或不重要"。

然后发现了range对象觉得有点厉害,写个文章学习一下。

Range对象

什么是range对象?Range表示包含节点和部分文本节点的文档片段。一切有关于户文本选择范围的信息都归range对象掌管。例如:
图片描述

但是在浏览器的发展历史中,衍生出了3个功能类似的对象,分别为W3C range,MOZ selection,IE textRange

W3C range

range对象如何来?

  1. Document 对象的 createRange方法创建。

  2. 用Selection对象的getRangeAt方法取得。

  3. 通过构造函数 Range()。
    API

图片描述

MOZ selection

通过window.selection获取Seletion对象。
API
图片描述

IE textRange

textRange

实现

可以做一些@出现用户名称效果和#话题#,复制时带上自信息。


发条橙子
399 声望14 粉丝

我爱吃西瓜