浏览器光标相关的一些操作

  /*获取光标位置*/
  getCursorPos(obj) {
    var CaretPos = 0; // IE Support
    if (document.selection) {
      obj.focus(); //获取光标位置函数
      var Sel = document.selection.createRange();
      Sel.moveStart("character", -obj.value.length);
      CaretPos = Sel.text.length;
    } // Firefox/Safari/Chrome/Opera support
    else if (obj.selectionStart || obj.selectionStart == "0") CaretPos = obj.selectionEnd;
    return CaretPos;
  }
  // 定位光标
  setCursorPos(obj, pos) {
    if (obj.setSelectionRange) {
      //Firefox/Safari/Chrome/Opera
      obj.focus(); //
      obj.setSelectionRange(pos, pos);
    } else if (obj.createTextRange) {
      // IE
      var range = obj.createTextRange();
      range.collapse(true);
      range.moveEnd("character", pos);
      range.moveStart("character", pos);
      range.select();
    }
  }
  /*
   * 移动光标位置
   * @Method poLastDiv
   */
  poLastDiv(obj) {
    obj.focus();
    if (window.getSelection) {
      //ie11 10 9 ff safari
      obj.focus(); //解决ff不获取焦点无法定位问题
      let range = window.getSelection(); //创建range
      range.selectAllChildren(obj); //range 选择obj下所有子内容
      range.collapseToEnd(); //光标移至最后
    } else if (document.selection) {
      //ie10 9 8 7 6 5
      let range = document.selection.createRange(); //创建选择对象
      range.moveToElementText(obj); //range定位到obj
      range.collapse(false); //光标移至最后
      range.select();
    }
  }
  /*
   * 获取光标所在元素
   * @Method getCursorWithElement
   */
  getCursorWithElement() {
    let element = this.getDomWithEventtarget;
    var doc = element.ownerDocument || element.document;
    var win = doc.defaultView || doc.parentWindow;
    var sel;
    if (typeof win.getSelection != "undefined") {
      //谷歌、火狐
      sel = win.getSelection();
      if (sel.rangeCount > 0) {
        //选中的区域
        var range = win.getSelection().getRangeAt(0);
        return range.endContainer.parentElement;
      }
    }
    // else if ((sel = doc.selection) && sel.type != "Control") {
    //   //IE
    //   var textRange = sel.createRange();
    //   var preCaretTextRange = doc.body.createTextRange();
    //   preCaretTextRange.moveToElementText(element);
    //   preCaretTextRange.setEndPoint("EndToEnd", textRange);
    //   caretOffset = preCaretTextRange.text.length;
    // }
    // return caretOffset;
  }
  /*
   * 根据坐标获取当前事件dom
   * @Method getDomWithCursorPos
   */
  getDomWithCursorPos(x, y) {
    return document.elementFromPoint(x, y);
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值