CKEditor 在 IE 和 FF 中省略了空格

CKEditor is omitting spaces in IE and FF

我已经在 jQueryUI 对话框文本区域配置了 CKEditor

在 Firefox 和 IE 中:

在 Google Chrome 中工作正常。

这是浏览器控制的行为,与CKEditor无关。

事实是:HTML 中表示的块末尾的 space 怎么可能?当我们不使用预格式化块时只有一种方法:

<p>Hello&nbsp;</p>

因此,当您在块末尾按 space 时,您希望在下面创建此 HTML。这就是 Chrome 和 Safari 所做的。

但是,接下来您开始输入另一个词。如果浏览器只插入这些下一个字符,您最终会得到:

<p>Hello&nbsp;World!</p>

但是等一下...您想要在这些词之间有一个正常的、易碎的 space,对吗?因此,当您继续输入时,Chrome 和 Safari 会将这些 &nbsp; 替换为正常的 space... 除非它们丢失上下文。然后你可能会得到很多 &nbsp;,这是一个问题。

因此,IE 和 FF 的处理方式不同。当你按下 space 时,他们会欺骗并插入一个正常的 space (或者甚至什么都没有——我没有检查)并渲染它。这是一种作弊,因为如果您在 contentEditable 之外呈现此内容,则此正常 space 将不可见。这就是您遇到的情况,恐怕没有简单的解决方案。你只需要忍受它。

虽然有一个技巧,您可以尝试,但实施起来相当困难。首先,按照 How to preserve white spaces in content editable div. Then, change CKEditor's parser 中的说明设置您的内容的样式,这样它就不会在块边界处掉落白色 space。第二步最难,因为需要修改CKEditor的代码