Javascript 将所选文本保持在输入焦点上

Javascript 将所选文本保持在输入焦点上,javascript,select,text,input,focus,Javascript,Select,Text,Input,Focus,我正在尝试在所选文本(在contenteditable中)上添加链接。链接窗口只是一个输入字段。问题是,在我选择一些文本后,单击链接按钮以显示链接输入字段和焦点,我将丢失所选文本 WYSIHTML5是如何做到的:?如果单击工具栏中的链接图标并将焦点放在链接的输入字段上,则选定的文本将保持选中状态 或者,我可以将选择保存在变量中,但是如何在blur()上调用它呢?我必须使变量成为全局变量?启用blur()时,我将获得“未定义选定” HTML: 有什么想法吗?谢谢 您可以使用它进行简单的选择管理 这

我正在尝试在所选文本(在
contenteditable
中)上添加链接。链接窗口只是一个输入字段。问题是,在我选择一些文本后,单击链接按钮以显示链接输入字段和焦点,我将丢失所选文本

WYSIHTML5是如何做到的:?如果单击工具栏中的链接图标并将焦点放在链接的输入字段上,则选定的文本将保持选中状态

或者,我可以将选择保存在变量中,但是如何在
blur()
上调用它呢?我必须使变量成为全局变量?启用
blur()
时,我将获得
“未定义选定”

HTML:

有什么想法吗?谢谢

您可以使用它进行简单的选择管理

  • 这是一个支持跨浏览器的库
  • 简单易用

  • 不,我想在没有库的情况下完成。然后检查库中的代码。您将了解如何获取选择并正确保存它。如果选择没有消失,那么WYSIHTML5必须对可编辑区域使用iframe(WYSIWYG编辑器的常见技术;过去在Firefox中这是唯一的方法)或伪造选择。我怀疑是前者。@Alex这可能是个老问题,但我想知道到目前为止你是否找到了解决办法?我也有同样的问题!谢谢
    <button class="link_button">L</button>
    <div class="link window hidden"><input name='link' class='link_input' autofocus='autofocus' value='http://'/></div>
    
    $('.link_button').click(function() {
        $('.link').toggleClass('hidden');
    });
    
    $('.link_input').focus(function() {
        var selected = saveSelection();
    })
    
    $('.link_input').blur(function() {
        restoreSelection(selected);
    })
    
    function saveSelection() {
        if (window.getSelection) {
            sel = window.getSelection();
            if (sel.getRangeAt && sel.rangeCount) {
                return sel.getRangeAt(0);
            }
        } else if (document.selection && document.selection.createRange) {
            return document.selection.createRange();
        }
        return null;
    }
    
    function restoreSelection(range) {
        if (range) {
            if (window.getSelection) {
                sel = window.getSelection();
                sel.removeAllRanges();
                sel.addRange(range);
            } else if (document.selection && range.select) {
                range.select();
            }
        }
    }