我希望我能在适当的社区中提出这个问题。
我是一个长期的fckeditor用户,正在咬紧牙关,现在用ckeditor取代fckeditor。它的安装非常简单,基本上可以正常使用!
我确实遇到了一个问题,我希望这里有人可以指点我能做什么。
问题是出现额外的换行符。
附带的第一个屏幕截图是编辑时编辑器在我的网站上的样子。
附带的第二个屏幕截图显示了发布后查看的结果(您可以看到所有额外的换行符。
原因 - 如果我查看源(第3个屏幕截图)似乎是ul标签周围的源中的额外行。或者它们可能在p标签周围。我不确定。
事实上,如果我在" source"中进行编辑模式并删除多余的行并重新提交最终结果看起来很好。
我想知道最好的做法是避免那些额外的换行符。我修改了我的设置以添加此内容:
CKEDITOR.replace( '%% whichField %%', {
on: {
instanceReady: function( ev ) {
// Output paragraphs as <p>Text</p>.
this.dataProcessor.writer.setRules( 'p', {
indent: false,
breakBeforeOpen: false,
breakAfterOpen: false,
breakBeforeClose: false,
breakAfterClose: false
});
}
}
});
这有点帮助,但我仍然在SOURCE中看到额外的空行,具体取决于输入。我想知道是否有一个通用的全面解决方案。而不是指定&#39; p&#39;在上面的设置中,我可以指定更通用的内容吗?或者是否有更好的做法来处理这种&#34;额外的换行符&#34;问题
谢谢,
道格
答案 0 :(得分:1)
HTML元素之间的间距不应有任何区别,只要您稍后不使用nl2br()这样的函数处理此代码,而HTML Output Formatting会使用<BR>
替换换行符。
我的猜测是你有大量的<BR>
标签,CKEditor没有生成,但这是通过类似于上述功能的功能完成的。
为了阻止CKEditor生成换行符,以便您没有要替换的新换行符,请查看https://www.drupal.org/project/wysiwyg_linebreaks示例以获取灵感。在底部的“获取示例源代码”部分中,单击第一个链接。你会发现有一些代码可以找到所有可以设置编写器规则的元素,在任何地方都设置false
而不是true
,这应该可以解决问题:
for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) ) {
this.dataProcessor.writer.setRules( e, {
indent: false,
breakBeforeOpen: false,
breakAfterOpen: false,
breakBeforeClose: false,
breakAfterClose: false
});
}
如果我是你,我宁愿做一些智能检测是否在将新行字符放入HTML标记内部之前将其更改为<BR>
,以保持HTML源代码的美观。您可能需要检查{{3}}的灵感(我不是该模块的作者)。