答案 0 :(得分:122)
将以下内容添加到CKEditor的 config.js 文件中:
config.enterMode = CKEDITOR.ENTER_BR;
示例:
...
CKEDITOR.editorConfig = function (config)
{
config.enterMode = CKEDITOR.ENTER_BR;
...
};
控制此行为的配置设置取决于用户按 Enter 时要执行的操作。
以防万一有新手使用HTML的人阅读此内容,我会对所涉及的概念进行一些基本的解释,以及为什么在按下 Enter 键时需要插入标记。
我们知道,如果我们在HTML文档中输入一些文本,然后在新行上添加其他文本,浏览器将不会将文本显示为两行,它将忽略任何回车并且会压缩字符之间的多个空格到一个空间。
以下HTML:
qwer
tyui
将呈现为:
qwer tyui
因此编辑器需要插入一个HTML标记来告诉浏览器它应该在新行上显示第二组文本。
控制它的配置设置为config.enterMode
,它提供三个选项:
每次按 Enter 时,默认设置会创建一个段落元素:
config.enterMode = CKEDITOR.ENTER_P; // inserts `<p>...</p>`
您可以选择创建div
元素而不是段落:
config.enterMode = CKEDITOR.ENTER_DIV; // inserts `<div></div>`
如果您不想将文本包装在任何内容中,可以选择插入换行标记:
config.enterMode = CKEDITOR.ENTER_BR; // inserts `<br />`
The CKEditor documentation indicates that using the ENTER_BR
setting is not recommended:
注意:由于其语义价值和正确性,建议使用
CKEDITOR.ENTER_P
设置。编辑器针对此设置进行了优化。
还有第二个设置可以控制类似的情况 - config.autoParagraph
。它的功能取决于上面讨论的config.enterMode
设置。
autoParagraph
确定span
等内联元素是否包含在p
设置指定的块元素(div
或enterMode
)中。默认是包装内联元素,因此如果您输入这样的跨度(作为HTML):
<span>asdfg</span>
它将被包装在像这样的p或div元素中:
<p><span>asdfg</span></p>
或者这个:
<div><span>asdfg</span></div>
如果您将内嵌元素设置为false
或将enterMode
设置为CKEDITOR.ENTER_BR
,则不会换行内联元素。
The CKEditor documentation includes this note about config.autoParagraph
:
注意:更改默认值可能会引入不可预测的可用性问题。
还有三个设置与此主题有些相关:
config.fillEmptyBlocks
config.forceEnterMode
config.ignoreEmptyParagraph
可在此处找到可用配置选项的完整列表:
答案 1 :(得分:14)
我知道我的比赛有点晚了,但我认为OP正在寻找的选择是:
config.autoParagraph = false;
答案 2 :(得分:5)
这在上面已经得到了很好的回答,但是如上所述,你不应该在主配置中改变它。
这样做的正确方法是.replace。
即。
<form name="title" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>">
<textarea id="editor2" name="editor2" rows="300"><?php echo $editor2;?></textarea>
<textarea id="editor1" name="editor1" rows="1" cols="50" onfocus="this.value=''; this.onfocus=null;">Type Tab Title Here:</textarea>
<input type="submit" value="Submit">
</form>
<script type="text/javascript">
CKEDITOR.replace( 'editor2', {
enterMode: CKEDITOR.ENTER_BR,
on: {'instanceReady': function (evt) { evt.editor.execCommand('maximize'); }},
});
</script>
答案 3 :(得分:5)
没有任何配置更改的非常简单的解决方案是使用
shift
+ enter
表示换行符<br>
和enter
即可生成新段落。优点是您不必进行任何配置更改。另外,你们两个都有。
答案 4 :(得分:2)
如果您想要排除<p>
代码,并且只想在Ckeditor中使用Bold Italic上标下标等基本编辑工具,请按以下步骤操作:
我对此持100%肯定,因为我连续研究了36小时:)
步骤1:在PHP网页中添加此脚本
<script type="text/javascript">
CKEDITOR.replace( 'editor1', {
enterMode: CKEDITOR.ENTER_BR,
on: {'instanceReady': function (evt) { evt.editor.execCommand('');}},
});
</script>
第2步:在您的textarea中添加id="editor2"
和onfocus="this.value='';"
,如下所示
<textarea id="editor2" name="AsYourWish" onfocus="this.value='';">
第3步:确保从Textarea中删除Class="ckeditor"
。
步骤4:如果没有发生,请重新加载您的网页删除缓存/历史记录并重新启动PC /笔记本电脑。
第5步:完成:)
答案 5 :(得分:0)
对于Django-ckeditor
,将此配置添加到您的settings.py
文件中:
ENTER_P = 1 # default
ENTER_BR = 2
ENTER_DIV = 3
CKEDITOR_CONFIGS = {
'default': {
'enterMode': ENTER_BR,
},
}
答案 6 :(得分:-1)
如果有人带着 ckeditor 5 来到这里,请不要使用此选项。他们已经删除了,我花了几天的时间才弄清楚。
恐怕您不会喜欢它,但是进入模式BR是根 万恶。如果我们能够将其从CKEditor 4中删除很长时间 以前,我们绝对不会在CKEditor 5中实现它。
相关GitHub issue