CKEditor4配置与开发详细中文说明文档(13)

采用此方法,允许内容规则可以由JavaScript动态地生成,并因任意目的存储成JSON数据格式。注意:对象字面量的键必须是唯一的,因此:

allowedContent: {   
 p: { 
  styles: 'text-align'   
 },     
 p: { 
    classes: 'tip'   
 } 
}
//等价于:
allowedContent: 'p(tip)'
//但永远不会是:
allowedContent: 'p{text-align}(tip)'

  5、输出格式化(Output Formatting)

CKEditor提供了强大而又灵活的输出格式化系统。它使开发人员可以完全控制由编辑器生成的HTML代码的样子。此系统可以控制所有HTML标记,并且可以给出每种标记不同的结果。

HTML编写器(HTML Writer)

HTML编写器插件可以使CKEditor生成高级格式化的输出。

CKEDITOR.htmlDataProcessor类使用"writer"来编写输出数据。因此,可以用editor.dataProcessor.writer属性检索出具体编辑器实例的当前编写器。

通过设置writer属性可以配置几种输出格式化选项。下面的例子概括了最常用的几种,给出了其默认值:

var writer = editor.dataProcessor.writer;
// 生一缩进步使用的字符串
 writer.indentationChars = '\t';
//自结束标记的方式,就像<br /> writer.selfClosingEnd = ' />';
// 断行所使用的字符串 writer.lineBreakChars = '\n';
// 标记的编写规则
 writer.setRules( 'p', {
// 表示在此标记中断行时缩进  
  indent: true,
//在<p>的开始标记前插入断行符  
  breakBeforeOpen: true,
//在<p>的开始标记后插入断行符  
  breakAfterOpen: true,
// 在<p>的结束标记前插入断行符  
  breakBeforeClose: false,
// 在<p>的结束标记后插入断行符  
  breakAfterClose: true }); 

设置编写器规则

因为编辑器是每个编辑器实例的属性,并且由于对加载的编写器插件的依赖,对它进行修改的最好方法是监听CKEDITOR.instanceReady事件;这样含义可以安全地假设CKEDITOR.editor.dataProcessor属性将会被加载,并准备好可以修改。下面的代码展示了当生成编辑器实例时使用此方法的例子:

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       
      });     
    }   
  } 
}); 

另一种方法是使用CKEDITOR对象,这样所有的编辑器实例会被改变:

 CKEDITOR.on( 'instanceReady', function( ev ) {
  // Ends self closing tags the HTML4 way, like <br>.   
  ev.editor.dataProcessor.writer.selfClosingEnd = '>'; 
});

      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/269.html