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

我有一个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();

}

}

}

以上是 在内容可编辑div中的光标处插入文本 的全部内容, 来源链接: utcz.com/qa/417643.html

回到顶部