将突出显示的文本作为javascript中的节点获取

时间:2016-07-18 21:23:40

标签: javascript

处理一些javascript代码;我想在突出显示时更改文本。我目前最接近的是:Get The Highlighted Selected Text。该解决方案的问题是它只是将文本突出显示为字符串,但它是一个字符串。所以我有文本,但我不能像节点一样编辑它,做innerHTML,改变字体等等。它只是一个字符串。我有一个“有效”的解决方案,但是,正在使用该字符串,然后搜索它。问题是,如果我在这篇文章中突出显示字符串“the”,我会得到一大堆答案,无法区分它们。

有没有办法将选定的文字作为节点?

2 个答案:

答案 0 :(得分:1)

您需要查找选择(window.getSelection();)并获取其范围以获得所选文本的正确位置。然后,您可以通过span-wrapping应用样式。 看看

http://jsfiddle.net/jme11/bZb7V/

答案 1 :(得分:0)

您可以从这个答案https://stackoverflow.com/a/3997896/5267669

了解其完成情况

基本上,您使用document.getSelection方法获取所选文本,然后将其删除,并在其位置插入您自己的内容。

例如,将您的选择替换为包含文本Added with js

的H1标签
sel = window.getSelection();
if (sel.rangeCount) {
   range = sel.getRangeAt(0);
   range.deleteContents();
   var h1 = document.createElement("h1");
   h1.textContent = 'Added with js';
   range.insertNode(h1);
}

您可以在此页面上选择任何内容,将此代码粘贴到控制台,选择内容将替换为h1标记