javascript - 插入span-node,继续写

标签 javascript jquery html dom

我在向可编辑的 div 添加节点时遇到问题。

我想在一个范围内添加突出显示的文本,然后光标应该在添加的范围之外。

现在光标在添加的范围内。

我创建了一个 Fiddle 来演示它: http://jsfiddle.net/4N4ZD/633/

这是一些代码:

function insertNodeAtCaret() {
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var range = sel.getRangeAt(0);
            range.collapse(false);
            var span = document.createElement('span');
            span.innerHTML = 'TEXT';
            span.style.background = 'yellow';
            range.insertNode(span);

            range = range.cloneRange();
            range.selectNodeContents(span);
            range.collapse(false);
            sel.removeAllRanges();
            sel.addRange(range);
        }
    }
}

最佳答案

找到解决方案。这是一个 fiddle :http://jsfiddle.net/4N4ZD/638/

诀窍是添加一个新的文本跨度并像这样使用方法“setStartAfter”:

    if (sel.getRangeAt && sel.rangeCount) {
        range = sel.getRangeAt(0);
        range.deleteContents();

        var span = document.createElement('span');
        span.innerHTML = 'TEXT';
        span.style.background = 'yellow';
        range.insertNode(span);

        var textNode = document.createTextNode('\u00A0');
        range.setStartAfter(span);
        range.insertNode(textNode);
        range.setStartAfter(textNode);
        range.collapse(true);

        sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
    }

关于javascript - 插入span-node,继续写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826098/

相关文章:

javascript - 页面加载时删除父div?

jquery - 表格在向下滚动时变为固定

jquery多个复选框-选择器不起作用

javascript - 重新填充选择框的有效方法?

Python 在按钮上发送邮件单击 Google App Engine

javascript - 为什么我的类构造变量在声明后保持未定义状态?

javascript - 动态地将 JavaScript 变量传递给 AngularJS 函数

javascript - 我需要一个 Javascript 文字语法转换器/反混淆工具

html - 影响内部绝对定位元素的固定元素的顶级属性

javascript - 如何检查不是对象数组的响应长度