考虑以下标记:
<p>spaceflight</p>
<p> </p>
<p> </p>
<p>spaceflight</p>
当用户选择整个文本块(例如使用[Ctrl + A])并在CKEditor中应用字体格式时,生成的标记是这样的:
<p><span style="font-family:comic sans ms,cursive">spaceflight</span></p>
<p> </p>
<p> </p>
<p><span style="font-family:comic sans ms,cursive">spaceflight</span></p>
即。字体不适用于空段落。
重现问题的步骤:
是否有任何已知的解决方法允许CKEditor将格式应用于当前选择中的空段落?
答案 0 :(得分:1)
这里的问题是用户明确地将字体应用到他们希望整个块都是该字体的整个块之后,但是当他们使用光标并导航到其中一个空段并开始在那里输入时它就会出现问题。完全不同的字体
所以问题实际上是不同的 - 它与数据无关,而是与这些空块无法在编辑器中保留样式。这是somewhere的一张票,但解决方案并非无足轻重。问题是当你将样式应用于空块时,会创建这个结构(检查编辑器的DOM):
<p><strong></strong><br /></p>
<br>
用于使段落可见 - 它被称为伪造的br。否则,段落的高度为0。
现在,当您尝试将插入符号放在那里(使用鼠标或键盘)时,浏览器会找到一个空的强元素,即0x0和一个宽度和高度均为非零的段落。浏览器放置你的插入符号?在段落中。
如果你在一个空的选择上应用样式并移动你的插入符号也会出现同样的情况 - 那里仍然是一个空的内联元素,但你不能将你的插入符号移回它。
可以解决这个问题,甚至不止一种方式。不幸的是,没有一件是微不足道的。
如果你想尝试实现一个应该解决最常见案例的黑客攻击,那么它应该像这样工作:
editor#selectionChange
)。