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