替换CKEditor

时间:2016-03-20 10:33:08

标签: ckeditor

我正在使用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,但这并没有解决问题。我想,显而易见的解决方案是在每次使用时迭代样式名称; style1,style2,style3 ......但这不是非常有利于资源。有没有人有这方面的实际解决方案?

谢谢, 利

2 个答案:

答案 0 :(得分:0)

您是否尝试将样式重命名为默认

我使用它并且它可以工作,我加载外部样式文件。但是阵列结构相同。

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

答案 1 :(得分:-1)

所以,在重新创建面板之前,我总是通过销毁面板来确定解决方案(如果存在)。例如:

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没有干净的方法,所以因为它有效,我将其标记为答案。