Javascript window.getSelection()替代

时间:2014-11-17 20:05:41

标签: javascript jquery getselection

我正在尝试手动选择文字。用于窗口选定文本的window.getSelection().getRangeAt(0);行。但是我希望这个由我预选。

foo=function()
    {       
    var selection= "Lorem ipsum dolor"; // Instead of this line window.getSelection().getRangeAt(0);
    var selectedText = selection.extractContents();
    var span= document.createElement("span");
    span.style.backgroundColor = "yellow";
    span.appendChild(selectedText);
    selection.insertNode(span);
    }

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> 
<input type="button" onclick="foo();" value="FOO"/>

1 个答案:

答案 0 :(得分:0)

有github项目findAndReplaceDOMText。一个可能有帮助的javascript库:它在给定的DOM节点中搜索正则表达式匹配,并用您可以指定的节点或文本替换或包装每个匹配。

您还可以使用window.find() / createTextRangeThis answer显示了如何做到这一点。它将匹配跨越元素边界的文本,并使用document.execCommand()为您突出显示。

最后 - 如果我查看您的示例并且您只想替换文本节点的特定片段 - 您可以使用这样的正则表达式:

element.innerHTML = element.innerHTML.replace(
    /Lorem ipsum dolor/gi,
    '<span class="f">$0</span>'
);