替换contenteditable div中的选定文本

问题描述:

我一直在高低寻找答案但却失败了。

I have been looking high and low for an answer but failed.

是否有跨浏览器解决方案来替换contenteditable div中的选定文本?我只是希望用户突出显示一些文本并将突出显示的文本替换为xxxxx。

Is there a cross-browser solution to replace selected text in contenteditable div? I simply want users to highlight some text and replace the highlighted text into xxxxx.

以下内容将完成所有工作主流浏览器:

The following will do the job in all the major browsers:

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