2016-03-20 120 views
1

我使用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 ...但这不是非常资源友好。有没有人有这个实际的解决方案?

感谢, 李

回答

-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,这样以来它的工作原理,我将其标记为答案。

+1

编辑器初始化后的修改样式集带来了以下问题: 1. [ACF](http://docs.ckeditor.com/#!/guide/dev_acf)根据提供的样式创建其配置 - 例如,允许包含在样式定义中的元素。 2.没有信息如何处理已删除样式的内容(应删除内容还是取消样式?) 处理此问题的最佳方法是销毁编辑器并使用更新创建一个新的样式配置。另外,在JSFiddle/JSBin上发布你的例子,以便更容易调查'错误 - 破坏'错误。 –

0

你试图重新命名风格默认

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

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

嗨,感谢您的评论。如果我这样做,我会得到错误:“未捕获的TypeError:无法读取未定义的属性'getEditor',这会打开一整个新的蠕虫罐。 –

+0

还有其他改变吗?我查了一下这个错误,看起来这个错误与你在替换命令中调用的textarea没有关系。 – imvain2