zoukankan      html  css  js  c++  java
  • 关于 Selection(getSelection ) 对象的一些常规用法集锦

    最近在做到的业务场景中涉及到选中文本的操作较多,现在将一些常规用法和场景记录下。

    1. 作用及获取

    Selection 对象主要表示用户选择的文本范围或者插入符号的当前位置,代表页面的文本选区,可能跟横跨多个元素。获取方法如下:

    this.selectOperate = window.getSelection ? window.getSelection() : window.document.getSelection();
    

    2.常用属性

    记住2个参数:anchor指向用户开始选择的方法,focus指向结束选择的地方,经常使用的有:

    • anchorNode: 选择文本开始所在的节点

    • focusNode: 选择文本结束点所在的节点

    • anchorOffset: 选择文本开始所在的节点位置

    • focusOffset: 选择文本结束所在的节点位置

    3.Range对象

    选中的文字可以转换成Range对象,通过Range对象可以作一些操作,比如删除,复制,插入,替换,或许选中的内容。
    获取Range对象

    • getRangeAt(0): 获取当前选中的range对象
    var range = this.selectOperate.getRangeAt(0);
    

    range对象能做的事:

    • range.cloneContents 克隆选中文档片段

    • range.deleteContents 删除选中片段

    其他属性,与前面的功能差不多~

    • range.startContainer 指用户选择内容开始处的容器节点
    • range.endContainer 指用户选择内容结尾处的容器节点
    • range.startOffset 开始容器的节点位置
    • range.endOffset 结尾容器的节点位置

    -range.insertNode 插入节点

        let oFragment = range.createContextualFragment('1234'); // 创建一个需要添加的range片段
        let oLastNode = oFragment.lastChild ; // 获取text节点1234
        range.insertNode(oFragment) ; // 在range处插入
        range.setEndAfter(oLastNode ) ; // 设置光标在插入的位置
        range.setStartAfter(oLastNode ); // 设置光标在插入的位置
        select.removeAllRanges(); // 去除之前的选择range
        select.addRange(range); // 将range设置为当前的range
    
  • 相关阅读:
    js设置与获取Cookie
    js,正则应用
    Ajax支持跨域之Web API实现
    RSA加密解密在jsencrypt+c#的实现-博客园加密登录
    转:sqlserver无法创建索引,超时时间已到解决办法
    【转】asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
    c#连接SFTP上传文件
    mac 修改mysql root密码
    Vue学习手记09-mock与axios拦截的使用
    Vue学习手记08-vue-cli的启动过程
  • 原文地址:https://www.cnblogs.com/webhmy/p/14431106.html
Copyright © 2011-2022 走看看