我想在Javascript中将浏览器窗口中的选定文本应用于span类(如高亮显示功能)。
我试过
function replaceSelectedTextWithHTMLString(newstring) {
var range = window.getSelection().getRangeAt(0);
range.deleteContents();
range.innerHTML = newstring;
}
但它不起作用。如果我尝试插入newstring =“< span =”myspan“> text< / span>”我看不到任何东西,'文字'没有出现。似乎它不喜欢HTML代码。我该如何解决?
答案 0 :(得分:1)
这有多容易取决于您需要实现的目标。如果您只需要使用背景颜色进行基本突出显示,那么最好的选择是document.execCommand()
。有关执行此操作的代码,请参阅以下内容:Change CSS of selected text using Javascript
如果你需要应用比document.execCommand()
更多的样式(对于粗体和斜体这样的东西也有various other formatting commands,但这产生的标记因浏览器而异,并不总是基于CSS) ,它更棘手:通常,您需要在具有所需类的范围内围绕选择内的每个文本节点。我建议使用Rangy及其CSS class applier module以跨浏览器的方式执行此操作。免责声明:这是我自己的库的插件。