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 = '>'; });
内容版权声明:除非注明,否则皆为本站原创文章。