我有一个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 时,我可以看到选择 (from rangy.getSelection()
) 是我所期望的。