70

是否有可能在 CKEditor 3.x 的 <p></p> 中关闭所有书面内容的自动封闭?

我试过

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

但这只是在离开封闭段落的同时将内联换行符更改为 <br />。

当前编写“测试”会产生此输出

<p>
    Test</p>

但我希望它简单

Test

是否有为此的配置属性,或者另一个内联编辑器是否更适合此?

4

12 回答 12

99

CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;- 这对我来说非常有效。您是否尝试过清除浏览器缓存 - 有时这是一个问题。
您还可以使用 jQuery 适配器检查它:

<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/js/ckeditor/adapters/jquery.js"></script>
<script type="text/javascript">
$(function() {
    $('#your_textarea').ckeditor({
        toolbar: 'Full',
        enterMode : CKEDITOR.ENTER_BR,
        shiftEnterMode: CKEDITOR.ENTER_P
    });
});
</script>


根据@Tomkay 的评论更新:

从 CKEditor 3.6 版开始,您可以配置是否希望内联内容自动使用<p></p>. 这是正确的设置:

CKEDITOR.config.autoParagraph = false;

来源: http ://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph

于 2010-04-21T15:10:56.500 回答
34

在互联网上,人们已经注意到将 config.enterMode 设置为 CKEDITOR.ENTER_BR 会从 CKEditor 中删除包装段落标签。值得注意的是,该设置将 Enter 键的行为更改为插入换行符而不是段落,这是不可取的。

请参阅:http ://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode “建议使用 CKEDITOR.ENTER_P 设置,因为它的语义价值和正确性。”

但是,用于删除初始段落的设置 config.autoParagraph 也不可取,因为它引入了“不可预测的可用性问题”,因为编辑器确实想要一个顶级块元素。

请参阅:http ://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph

魔法发生在 wysiwygarea/plugin.js 的第 410 行,编辑器根据 config.enterMode 选择默认的块元素。更改默认块元素的配置选项将允许我们从 div 开始,但我们会在每次按 Enter 时继续获得更多 div,除非我们通过菜单更改段落格式。

见:http ://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html

可以通过后处理(在服务器上或在 CKEditor 的 getData 事件中)删除包装段落标记,但这会导致我们遇到与禁用 autoParagraph 相同的问题:没有顶级块。

我宁愿说没有一个好的解决方案,而是一些半解决方案,而不是接受更改 config.enterMode 作为规范的解决方案。

于 2012-01-06T16:57:54.900 回答
9

在 config.js 中试试这个

CKEDITOR.editorConfig = function( config )
{
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
};
于 2011-03-07T13:51:39.710 回答
5

找到了!

ckeditor.js 第 91 行 ... 搜索

B.config.enterMode==3?'div':'p'

改成

B.config.enterMode==3?'div':''(不!)

转储你的缓存和 BAM!

于 2011-01-07T23:42:40.210 回答
5

将此作为您的 config.js 文件代码

CKEDITOR.editorConfig = function( config ) {

   //   config.enterMode = 2; //disabled <p> completely
        config.enterMode = CKEDITOR.ENTER_BR; // pressing the ENTER KEY input <br/>
        config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
        config.autoParagraph = false; // stops automatic insertion of <p> on focus
    };
于 2015-04-28T03:02:47.660 回答
2

我正在做一些我不引以为豪的解决方法。在我实际保存到数据库的 Python servlet 中,我这样做:

if description.startswith('<p>') and description.endswith('</p>'):
    description = description[3:-4]
于 2010-03-05T22:53:53.103 回答
1
if (substr_count($this->content,'<p>') == 1)
{
  $this->content = preg_replace('/<\/?p>/i', '', $this->content);
}
于 2010-06-16T15:36:05.120 回答
1

编辑源代码(或关闭富文本)并将 p 标签替换为 div。然后以任何你想要的方式设置 div 的样式。

ckEditor 不会在下一次提交时添加任何包装器元素,因为您在那里有 div。

(这解决了我的问题,我正在使用 Drupal 并且需要编辑器总是添加额外的 html 的小片段,但其余时间我想要包装 p 标签)。

于 2012-12-13T12:07:35.153 回答
1

将此作为您的 config.js 文件代码

CKEDITOR.editorConfig = function( config ) {

   //   config.enterMode = 2; //disabled <p> completely
        config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/>
        config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
        config.autoParagraph = false; // stops automatic insertion of <p> on focus
    };
于 2015-04-28T02:36:04.710 回答
1

好吧,我在 laravel 中,使用 ckeditor,它使用简单strip_tags($var)的函数进行输出,如下所示:

将值发送到其他页面:{!! strip_tags($six_answer) !!}

和/或输出时使用相同的代码:{!! strip_tags($six_answer) !!}.

结果如下,没有任何<p>标签。 在此处输入图像描述

于 2021-10-18T07:55:18.410 回答
0

设置这样的配置:

    CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
    CKEDITOR.config.forcePasteAsPlainText = true
于 2017-08-22T13:07:18.263 回答
-2

在 VS2015 中,这可以将 Enter 键变成<br>

myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR

就个人而言,我不在乎我的结果文本是否<br>只有<p>. 它渲染得非常好,看起来就像我想要的那样。最后,它起作用了。

于 2017-09-15T13:37:56.660 回答