chrome 64版本下获取焦点位置失败

1、问题描述:项目用的vue,其中有一个功能是用div模拟textarea,实现的功能是可以点击div里面任意的位置插入文本,效果如图:图片描述

2、原来效果是正常的,但是最近更新了chrome的版本之后就出了bug了,效果如下:图片描述

同样的代码,在chrome 63以下的版本是可以的,但是在chrome 64的时候就出现了bug,初始定位是浏览器兼容问题,但是在can i use 上面查了是兼容的,而我新建的一个html页面,同样的代码在chrome上面也是可以的。(目前项目是使用了vue,该功能是用原生js实现的)。
3、关键代码如下:(代码是参照网上大神的实现的)

if (window.getSelection) {
    // IE9 and non-IE
    sel = window.getSelection(); 

    if (sel.getRangeAt && sel.rangeCount) {
        range = sel.getRangeAt(0); 
        range.deleteContents(); 
        // Range.createContextualFragment() would be useful here but is
        // non-standard and not supported in all browsers (IE9, for one)
        var el = document.createElement("div");
        el.innerHTML = inputValue;

        var frag = document.createDocumentFragment(), node, lastNode; 
        while ((node = el.firstChild)) {
              lastNode = frag.appendChild(node);
        }
        range.insertNode(frag);
        // Preserve the selection
        if (lastNode) {
            range = range.cloneRange();
            range.setStartAfter(lastNode);
            range.collapse(true);
            sel.removeAllRanges();
            sel.addRange(range);
             }
          }
       } else if (document.selection && document.selection.type != "Control") {

         // IE < 9
          document.selection.createRange().pasteHTML(html);

      }

看了一下:怀疑是在获取range的时候获取的值出错了造成的
图片描述

如果刚好有大神遇到类似的情况,恳请赐教!

阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题