我正在使用CKeditor V3.x,并且一页上有多个实例。我必须为客户端添加自定义样式,因此我像这样使用CKEDITOR.stylesSet.add(如http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Styles文档中所述):

CKEDITOR.stylesSet.add( 'mystyles',
    [
        { name : 'Quote onderschrift', element : 'p', attributes : { 'class' : 'quote_sub' } },
        { name : 'Inleiding', element : 'p', attributes : { 'class' : 'inleiding' } }
    ]);
    config.stylesSet = 'mystyles';

当页面上只有一个编辑器时,此方法有效。当我在一个页面上有更多编辑器时,会出现以下错误(通过Firebug):

未捕获的异常:[CKEDITOR.resourceManager.add]资源名称“mystyles”已被注册。

结果是我根本没有任何编辑器。尽管这个错误似乎是逻辑上的,但我想以一种好的方式来解决它。目前,我设法通过该线程Adding custom styles to CKEditor解决了该问题,因此我解决了在页面本身上而不是在配置中添加自定义样式的问题,如下所示:
CKEDITOR.replace('post_description', {
    stylesSet :
    [
        { name : 'Quote onderschrift', element : 'p', attributes : { 'class' : 'quote_sub' } },
        { name : 'Inleiding', element : 'p', attributes : { 'class' : 'inleiding' } }
    ]
});:

如前所述,这迫使我在需要自定义样式的所有页面上使用此修复程序。是否有更好的解决方案来解决此问题?我希望在主配置文件中添加样式。

最佳答案

我在页面上只有一个编辑器时遇到了相同的错误。我通过在主配置中将stylesSet设置为我想要的样式定义来修复它。

config.stylesSet = [
    {
        name: 'Blue Title',
        element: 'h3',
        attributes: { 'class': 'blue-title' },
        styles: { color: 'blue' }
    }, {
        name: 'Red Text',
        element: 'p',
        attributes: { 'class': 'red-text' },
        styles: { color: 'red' }
    }
];

这不是完美的解决方案,但可以完成工作。

10-04 13:03