发布于 2015-08-22 23:57:11 | 552 次阅读 | 评论: 0 | 来源: PHPERZ
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 = '>'; });