我有一个允许用户评论文本文档(如谷歌文档)的应用程序。当我允许用户从页面中删除这些评论时,我遇到了一些奇怪的行为。根据删除请求,我运行了一些代码,从评论中提取原始内容,然后从页面中删除评论。
删除代码如下所示
html = html + $(this).html()
$(this).children().andSelf().unbind();
$(this).contents().unwrap()
$(this).remove()
该代码是从一段较大的代码中提取的,但我不认为该代码的其余部分是隔离此问题所必需的。事实上,我什至不确定这段代码是否需要修复它。
无论如何,当用户删除评论(使用上面的代码)然后尝试在同一个地方留下另一个评论时,就会出现问题。无论他们试图对什么发表评论,如果它甚至包含旧评论中的部分内容,浏览器都会自动选择旧评论中的所有内容。
奇怪的是,我已经彻底扫描了 html,并且没有基于 html 的旧评论残余。浏览器中剩下的所有内容(当我检查元素时)都是断引号,其中注释用于开始和结束。
这是一个带有注释的摘录(它是带有 hl 类的跨度)
<span class="T1">Lorem ipsum hendrerit in
<span class="hl s_240" highlight_id="s_240">
<span class="remove_highlight" style="display: none;">Remove</span>
"vulputate"
</span> velit esse
</span>
这是删除注释后提取的代码
<span class="T1">Lorem ipsum "vulputate" velit esse </span>
请注意先前突出显示的单词周围的引号,这是当我发表新评论时发生的情况,仅选择 veluptuate 中的 e 和以下单词中的 v
<span class="T1">"Lorem ipsum hendrerit in "
<span class="hl new_hl s_421" highlight_id="s_421">
<span class="remove_highlight">Remove</span>
"vulputate v"
</span>
"elit esse"
</span>
如您所见,浏览器会自动假设我想突出显示整个单词 vulputate,即使我只选择了其中的一部分。
如果有人能告诉我为什么会发生这种情况或如何解决它,我将不胜感激!