javascript - 如何将插入符号设置为 contenteditable 中 Range 对象的最后一个字符?

标签 javascript jquery

我很难弄清楚如何根据 Range 对象中的最后一个字符设置插入符号位置。

例如,我有 contenteditable,其中包含一些文本。

Hello world Test

然后我用鼠标突出显示文本部分(“wor”):

enter image description here

然后 mouseup 事件将获取选定的范围。

焦点消失后,所选的突出显示将消失。

现在,我的目标是将插入符号设置在“r”和“l”之间,如下图所示(范围的末尾)

enter image description here

到目前为止,我已经完成了选择和恢复部分的工作,但无法根据 Range 对象找出插入符号设置。

代码:

var node = this.element.find(".reContentArea")[0];
var range = document.createRange();

var sel = window.getSelection();

sel.removeAllRanges();
sel.addRange(range);

最佳答案

您可以使用focusOffset来获取选择结束的字符位置:

$('.reContentArea').on('mouseup', function() {
    var offset= window.getSelection().focusOffset 
})

contenteditable 元素 上设置插入符号位置时,我们可以使用 setStart(startNode, startOffset) 。正如您在此方法中看到的,我们需要指定节点以及该节点内的偏移量。

var editable = $('.reContentArea')[0],
    range = document.createRange(),
    sel = window.getSelection();    

range.setStart(editable.firstChild, offset);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);

我不清楚你想触发什么“将插入符号设置为”,但我已经用这个解决方案在这个jsfiddle上做了一个简单的点击事件。 .

关于javascript - 如何将插入符号设置为 contenteditable 中 Range 对象的最后一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20435854/

相关文章:

javascript - 使用按钮刷新任意图像

javascript - jQuery 返回多个函数

javascript - 在 IE8+ 中使用 Twitter Bootstrap 选项卡启用后退按钮处理

jQuery Slick 轮播 slider 同步不起作用

javascript - JavaScript 有没有办法聚焦文档(内容区域)?

javascript - jQuery:将数组值分配给另一组元素

javascript - Lightbox2 - 返回幻灯片开始处

javascript - 为什么我的幻灯片没有循环播放

javascript - 使用 tumblr JSON 呈现自定义照片集

javascript - svg 拖放