【发布时间】:2023-03-21 02:12:01
【问题描述】:
我正在使用highlighter module in Rangy。
我有一个 div 元素,它有一些 html。 html 实际上是使用 ajax 从文件中加载的,我有一个按钮来执行此加载。
加载文本后,我可以选择显示的 html 的一部分并按下“突出显示”按钮。这会调用一些 Rangy 代码并根据需要突出显示文本...
//called on document load
rangy.init();
cssApplier = rangy.createCssClassApplier(highlightClassName, { normalize: true });
highlighter = rangy.createHighlighter(document, "TextRange");
highlighter.addClassApplier(cssApplier);
//called on "Highlight" button click
highlighter.highlightSelection(highlightClassName, selection);
出于复制的目的,请选择较大的部分作为第一个亮点。
接下来,我单击加载 html 按钮以重新加载 html。正如预期的那样,亮点消失了。但是现在我选择了另一个文本,它恰好与我所做的第一个突出显示重叠。现在,当我按下“突出显示”按钮时,由于某种原因,突出显示是上一个突出显示的那个。为什么会这样?
我知道合并肯定与某些事情有关,但我不明白为什么。当我调试 JS 时,我可以看到选择(来自 rangy.getSelection())是我所期望的。
【问题讨论】:
标签: javascript rangy