删除使用JavaScript添加到所选文本的突出显示?

Pho*_*Jon 2 javascript dom highlight selection

我使用JavaScript使用以下代码突出显示了所选文本:

var sel = window.getSelection();
if(!sel.isCollapsed) {
    var range = sel.getRangeAt(0);
    sel.removeAllRanges();
    document.designMode = "on";
    sel.addRange(range);
    document.execCommand("HiliteColor", false, "#ffffcc");
    sel.removeAllRanges();
    document.designMode = "off";
}
Run Code Online (Sandbox Code Playgroud)

如何删除突出显示的颜色并恢复文本?

Tim*_*own 7

这里有一些代码可以添加和删除高亮显示.实际发布这里太长了,所以我做了一个演示并在下面发布了一个片段.它并不是很理想,因为该unhighlight()函数不会删除<span>突出显示命令所插入的元素,但需要注意的是这可能是一个可能的添加.

现场演示:http://jsfiddle.net/timdown/Bvd9d/

代码段:

function unhighlight(node, colour) {
    if (!(colour instanceof Colour)) {
        colour = new Colour(colour);
    }

    if (node.nodeType == 1) {
        var bg = node.style.backgroundColor;
        if (bg && colour.equals(new Colour(bg))) {
            node.style.backgroundColor = "";
        }
    }
    var child = node.firstChild;
    while (child) {
        unhighlight(child, colour);
        child = child.nextSibling;
    }
}
Run Code Online (Sandbox Code Playgroud)