• Opera下textarea的selection问题,被搞死了。。。


    最近工作需要写了一个工具方法用来在textarea里面插入文本,代码如下:

        ctx.insertText = function (el, txt) {
            var dom = el.get(0);
            if (window.getSelection) {
                var start = dom.selectionStart, end = dom.selectionEnd, temp = dom.value;
                dom.value = temp.substring(0, start) + txt + temp.substring(end, temp.length);
                dom.selectionStart = dom.selectionEnd = start + txt.length;
            } else if (document.selection) {
                var range = document.selection.createRange();
                range.text = txt; range.collapse(false); range.select();
            } else {
                dom.value += txt;
            }
        };
    

    测试了几个浏览器一切正常,直到测试Opera悲剧了。

    内容虽然正常的插入了,可是选择域出问题了,总是会把光标后面所有的内容选中,如下图:

    百思不得其解,解决不了后面放弃掉了,过了很多天,哥看到这个issue还是很刺眼,今天回来重新对付这个问题。

    研究了半天,猜测了一下,哥简单的将这句代码:

    dom.selectionStart = dom.selectionEnd = start + txt.length;

    更改成:

    dom.selectionEnd = dom.selectionStart = start + txt.length;

    没错就是先赋值selectionEnd属性,然后所有事情都搞定。。。哥是相当的无语啊,这个可是Opera的bug????

    浏览器没那么聪明!
  • 相关阅读:
    The usage of Markdown---杂谈:缩进/换行/分割线/注释/文字颜色
    insert into,insert into select,replace into,replace into select,insert ignore into,on duplicate key update
    mysql使用指南
    openssl使用
    黑名单
    zsh+iTerm2+ powerline+oh-my-zsh+ agnoster
    mac安装brew软件管理工具
    mysql性能优化
    numactl
    vscode
  • 原文地址:https://www.cnblogs.com/rulee/p/2421604.html
Copyright © 2020-2023  润新知