在CKEditor中添加<p>时删除不需要的换行符</p>

时间:2010-03-30 17:03:19

标签: javascript newline wysiwyg ckeditor

在CKEditor中加载包含一组段落的内容时,它会将<p>标记替换为<p>&#x9;

这意味着编辑转换了这个:

<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
最终会像这样结束:

<p>
   paragraph 1</p>
<p>
   paragraph 2</p>
<p>
   paragraph 3</p>

如何修复它以便CKEditor在看到段落标记时不添加额外的换行符?

5 个答案:

答案 0 :(得分:25)

在其他地方(我道歉,我没有记下我从哪里得到它。),我找到了代码来解决所有块级标签的问题。对于我的项目,额外的新行是一个问题,因为输出到XML并作为CDATA导入到其他应用程序。

所以,在我的ckeditor_config.js文件中,在CKEDITOR.editorConfig函数之后,我输入了这个:

CKEDITOR.on('instanceReady', function( ev ) {
  var blockTags = ['div','h1','h2','h3','h4','h5','h6','p','pre','li','blockquote','ul','ol',
  'table','thead','tbody','tfoot','td','th',];

  for (var i = 0; i < blockTags.length; i++)
  {
     ev.editor.dataProcessor.writer.setRules( blockTags[i], {
        indent : false,
        breakBeforeOpen : true,
        breakAfterOpen : false,
        breakBeforeClose : false,
        breakAfterClose : true
     });
  }
});

其中一些元素可能不需要这种治疗;显然,blockTags数组可以根据您的需要轻松编辑。

答案 1 :(得分:12)

将此行添加到ckeditor.js配置文件中:

n.setRules('p',{indent:false,breakAfterOpen:false});

有关HTML Writer格式的更多信息,请参阅CKSource文档的Developers Guide: Output Formatting

答案 2 :(得分:1)

我相信有一个设置来格式化代码,或自动缩进或沿着这些行的东西。它旨在使源代码更具可读性。我认为它的有效性是开放的。

答案 3 :(得分:1)

如果您像我一样,并希望在实例级别执行此操作,并且不想触摸配置文件,以便更新/升级。那么这是另一种解决方案。

CKEDITOR.replace( 'editor1',
{
    on :
    {
        instanceReady : function( ev )
        {
            // Output paragraphs as <p>Text</p>.
            this.dataProcessor.writer.setRules( 'p',
                {
                    indent : false,
                    breakBeforeOpen : true,
                    breakAfterOpen : false,
                    breakBeforeClose : false,
                    breakAfterClose : true
                });
        }
    }
});

参考:Output Formatting

答案 4 :(得分:0)

最有效的解决方案:

编辑 contents.css 文件并设置段落的样式,例如

 p {
     margin-top:0px;
     margin-bottom:5px;
 }