这种行为特定于 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。
请注意,在“中断”跨度之后立即键入一些文本可以解决问题,因为您可以向左箭头返回跨度完成的位置并像往常一样成功退格。但是,一旦您删除此文本,问题就会再次出现。
我特别关心它,因为 Span是我正在使用的范围和选择库Rangydisplay: none
的一个组成部分。我发现使用 Rangy 有时会阻止 Span 被删除,这似乎是根本原因。