此行为特定于Chrome(在编写版本26.0.1410.64 m时,但我知道它已经发生了一段时间)。
采用以下HTML:
<div contenteditable="true">
<div contenteditable="false">
<div contenteditable="true"><div><span contenteditable="false">[Interruption]</span><span style="display: none;"></span></div></div>
</div>
在生成的ContentEditable Div中,将插入符号放在“中断”范围之后。然后尝试使用退格键将其删除。你会发现这是不可能的。
以下是jsfiddle说明这一点。
请注意,在“中断”范围之后立即键入一些文本可以解决问题,因为您可以像往常一样将左箭头返回到跨度完成和退格的位置。但是一旦删除此文本,问题就会再次发生。
我特别关注,因为display: none
的跨度是我正在使用的范围和选择库Rangy的组成部分。我发现使用Rangy有时会阻止Spans被删除,这似乎是根本原因。