以下功能将在插入符号位置插入文本,并删除现有选择。它适用于所有主流桌面浏览器:
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(); } }}


