在内容可编辑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