0

我想在 Javascript 中将跨度类应用于浏览器窗口上的选定文本(如突出显示功能)。

我试过了

function replaceSelectedTextWithHTMLString(newstring) {
    var range = window.getSelection().getRangeAt(0);
    range.deleteContents();
    range.innerHTML = newstring;
}

但它不起作用。如果我尝试插入为 newstring= "< span = "myspan" > text </ span >" 我什么也看不到,并且“文本”也不会出现。似乎它不喜欢 HTML 代码。我该如何解决?

4

1 回答 1

1

这有多容易取决于您到底需要实现什么。如果您只需要使用背景颜色进行基本突出显示,那么最好的选择是document.execCommand(). 有关执行此操作的代码,请参见以下内容:Change CSS of selected text using Javascript

如果您需要应用比document.execCommand()提供的样式更多的样式(还有各种其他格式命令,例如粗体和斜体,但它产生的标记因浏览器而异,并且并不总是基于 CSS),这要棘手得多:通常,您需要用所需的类将选择范围内的每个文本节点包围起来。我建议使用Rangy及其CSS 类应用程序模块以跨浏览器的方式执行此操作。免责声明:这是我自己的库的插件。

于 2011-02-09T10:12:57.857 回答