Ckeditor 替换编辑器中的样式

Ckeditor 替换编辑器中的样式,ckeditor,Ckeditor,我正在使用CKEditor构建一个简单的站点构建工具。该工具可以选择和设置选项板,这些选项板应反映在CKEditor的“样式”下拉列表中。然而,在我看来,样式不能在CKEditor中被覆盖。我目前掌握的代码是: CKEDITOR.stylesSet.add( 'styles', [ // Block-level styles { name: 'blah 1', element: 'h2', styles: { 'color': '#xxxxxx' } }, { name: 'blah

我正在使用CKEditor构建一个简单的站点构建工具。该工具可以选择和设置选项板,这些选项板应反映在CKEditor的“样式”下拉列表中。然而,在我看来,样式不能在CKEditor中被覆盖。我目前掌握的代码是:

CKEDITOR.stylesSet.add( 'styles', [
  // Block-level styles
  { name: 'blah 1', element: 'h2', styles: { 'color': '#xxxxxx' } },
  { name: 'blah 2', element: 'h3', styles: { 'color': '#xxxxxx' } },
  { name: 'blah 3' , element: 'h4', styles: { 'color': '#xxxxxx' } },
  { name: 'blah 4' , element: 'h5', styles: { 'color': '#xxxxxx' } },
] );
CKEDITOR.config.stylesSet = 'styles';
现在,如果我用新样式重复这一点,我会得到:

ckeditor.js:232 Uncaught Error: [CKEDITOR.resourceManager.add] The resource name "styles" is already registered.
我尝试过使用CKEDITOR.replace,但这并不能解决问题。我想,显而易见的解决方案是在每次使用时迭代样式名称;样式1,样式2,样式3。。。但这对资源不太友好。有人对此有实际的解决方案吗

谢谢,
Lee

您尝试过将样式重命名为默认值吗

我使用它,它工作,我的加载一个外部样式文件。但是相同的数组结构

CKEDITOR.config.stylesSet = 'default:http://' + window.location.host + '/folder/fckeditor.styles.js';

因此,我想出了一个解决方案,总是在重新创建面板之前销毁面板(如果存在)。例如:

if (CKEDITOR.instances['footer-' + i]) {
  CKEDITOR.instances['footer-' + i].destroy(true);
}
var editor = CKEDITOR.inline('footer-' + i, {
  stylesSet: [
    // Block-level styles
    { name: 'Blue Title', element: 'h2', styles: { 'color': 'Blue' } },
    { name: 'Red Title' , element: 'h3', styles: { 'color': 'Red' } },
    { name: 'Brown Title' , element: 'h4', styles: { 'color': 'Red' } },
    { name: 'Purple Title' , element: 'h5', styles: { 'color': 'Red' } }
  ]
});
现在,它每次都会发出警告,说:

[CKEDITOR] For more information about this error go to http://docs.ckeditor.com/#!/guide/dev_errors-section-editor-incorrect-destroy

但是,对于CKEditor API,没有干净的方法可以做到这一点,因此,既然它可以工作,我将其标记为答案。

您好,谢谢您的评论。如果我这样做,我会得到错误:“UncaughtTypeError:无法读取undefined的属性'getEditor',这会打开一个全新的蠕虫罐头。还有什么变化吗?我查找了该错误,似乎该错误与找不到您在replace命令中调用的textarea有关。在编辑器初始化后修改样式集会带来以下问题:1。基于提供的样式创建其配置-例如,允许包含在样式定义中的元素。2.没有关于如何处理已删除样式的内容的信息(内容是否应删除或取消样式?)处理此问题的最佳方法是销毁编辑器,并使用更新的样式配置创建一个新编辑器。另外,将您的示例发布在JSFiddle/JSBin上,以便更容易地调查
不正确的destroy
错误。