Javascript window.getSelection() 替代方案

标签 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"/>

最佳答案

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

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

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

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

关于Javascript window.getSelection() 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26980987/

相关文章:

javascript - jQuery 的更改方法在这里做什么(如果有的话)?

javascript - 文本区域中的文本选择大写

javascript - getSelection.toString() - 不使用 toString()?

javascript - 根据复选框过滤表格

javascript - package.json 使用 npm 调用 Harp 和浏览器同步

javascript - 如何在延迟加载网页上单击 'Show More' 按钮

jquery - 在 jquery 选择器中使用 not() 变量

javascript - 如何修复使用 100% 宽度的 javascript slider 中的疯狂间距?

javascript - 如何使用javascript获取所选文本末尾的坐标?

javascript - 将重复控件绑定(bind)到 session 或 View 范围变量