zoukankan      html  css  js  c++  java
  • 利用Range改变光标位置

    先上代码,代码取自网上某插件

    function caret(begin, end) {
        if (this.length == 0) return;
        if (typeof begin == 'number') {
            end = (typeof end == 'number') ? end : begin;
            return this.each(function() {
                if (this.setSelectionRange) { //现代浏览器
                    this.focus();
                    this.setSelectionRange(begin, end);
                } else if (this.createTextRange) { //IE678
                    var range = this.createTextRange();
                    range.collapse(true);
                    range.moveEnd('character', end);
                    range.moveStart('character', begin);
                    range.select();
                }
            });
        } else {
            if (this[0].setSelectionRange) { //现代浏览器
                begin = this[0].selectionStart;
                end = this[0].selectionEnd;
            } else if (document.selection && document.selection.createRange) { //IE678
                var range = document.selection.createRange();
                begin = 0 - range.duplicate().moveStart('character', -100000);
                end = begin + range.text.length;
            }
            return {
                begin: begin,
                end: end
            };
        }
    }
    

    Range是一个抽象的接口,具有起始位置和结束位置。如果起始位置等于结束位置,则形成光标。
    其中Range.collapse(bool)就是让起始位置和结束位置重合,bool=true(默认值),在起始位置重合;bool=false,在结束位置重合。
    Range.select()就是选择文本。

    参考链接

    1. 各浏览器对 Range 接口的实现存在差异
    2. TextRange object
    3. 设置输入域(input/textarea)中文本光标的位置
  • 相关阅读:
    spring boot 定时任务
    logger日志级别
    jstl与el结合常见用法
    sql 案例
    Python 环境
    java rsa加密解密
    app扫描二维码登陆
    TimerTask定时任务
    spring3+quartz2
    表关系
  • 原文地址:https://www.cnblogs.com/3tree/p/4587116.html
Copyright © 2011-2022 走看看