关闭CKEditor 3.0中的封闭<p>标签</p>

时间:2009-12-30 00:28:47

标签: html tags ckeditor paragraph

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

我试过

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

但这只会将内联换行符更改为&lt; br /&gt;而离开附录的段落。

目前正在编写“测试”产生此输出

<p>
    Test</p>

但我希望它只是

Test

是否有配置属性或另一个内联编辑器更适合这个?

11 个答案:

答案 0 :(得分:83)

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

答案 1 :(得分:32)

在互联网上,人们注意到将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

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

请参阅:http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html

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

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

答案 2 :(得分:9)

在config.js

中试试
CKEDITOR.editorConfig = function( config )
{
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
};

答案 3 :(得分:5)

发现它!

ckeditor.js第91行...搜索

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

更改为

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

转储你的缓存和BAM!

答案 4 :(得分:4)

使用你的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
    };

答案 5 :(得分:2)

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

if description.startswith('<p>') and description.endswith('</p>'):
    description = description[3:-4]

答案 6 :(得分:1)

if (substr_count($this->content,'<p>') == 1)
{
  $this->content = preg_replace('/<\/?p>/i', '', $this->content);
}

答案 7 :(得分:1)

编辑源(或关闭富文本)并用div替换p标记。然后以任何你想要的方式设置div。

ckEditor不会在下一次提交时添加任何包装元素,因为你已经有了div。

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

答案 8 :(得分: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
    };

答案 9 :(得分:0)

设置这样的配置:

    CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
    CKEDITOR.config.forcePasteAsPlainText = true

答案 10 :(得分:-1)

在VS2015中,这可以将Enter键转换为<br>

myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR

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