当前位置: 首页 > 面试题库 >

在内容可编辑div中的光标处插入文本

田鸿彩
2023-03-14
问题内容

我有一个contenteditable div,需要在插入符号的位置插入文本,

可以通过IE在IE中轻松完成此操作 document.selection.createRange().text = "banana"

在Firefox / Chrome中有类似的实现方式吗?

谢谢!


问题答案:

以下功能将在插入符号位置插入文本,并删除现有选择。它适用于所有主流桌面浏览器:

function insertTextAtCursor(text) {
    var sel, range;
    if (window.getSelection) {
        sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();
            range.insertNode( document.createTextNode(text) );
        }
    } else if (document.selection && document.selection.createRange) {
        document.selection.createRange().text = text;
    }
}

更新

基于注释,下面是一些用于保存和还原选择的代码。在显示上下文菜单之前,应该将返回值存储saveSelection在一个变量中,然后restoreSelection在隐藏上下文菜单之后并插入文本之前,将该变​​量传递给它以恢复选择。

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();
        }
    }
}


 类似资料:
  • 本文向大家介绍JS在可编辑的div中的光标位置插入内容的方法,包括了JS在可编辑的div中的光标位置插入内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现在可编辑div中指定位置插入内容的方法,就像我们使用的编辑器一样,分享给大家供大家参考。具体实现方法如下: 首先要让DIV启用编辑模式 通过设定contenteditable=true开启div的编辑模式.这样DIV就可以

  • 项目中用到了simditor编辑器 https://simditor.tower.im/ 编辑器中扩展了一个插入表情的功能 现在的问题是怎么在内容的任意光标处插入表情,就算用空格或者无内容时,也能正常插入

  • vue项目中使用了富文本编辑器quill v1.3.7,然后写了自定上传相关业务代码,由于需要支持大文件上传,所以自定义里面做了分片上传逻辑,分配上传完成后,最后调用接口返回文件地址等信息,拿到信息后,需要插入到quill富文本编辑器中,这个测试下来没什么问题,但是当插入大文件时,通过 如上代码插入视频却总是报错,通过调试发现that.editor.getSelection()返回null,但是上

  • 我有一个可编辑的div内容,我保存了一些html文本。我添加了属性< code>runat="server",并希望用c#获得html文本内容。有人能帮我吗?这是我的< code>div PS:不起作用!! PS2:我的目的通常就像这里一样。我想从允许的div中获取数据并将其用作HTML字符串 已解决:

  • Ruby我已经开始在我的Ruby代码中插入不可编辑的文本,我觉得这很烦人。例如,这个简单的rSpec表达式: ...变成了这样: 另一个例子是: ...变成了这样: 如何关闭此功能?