更改ckEditor的背景颜色

时间:2012-07-09 14:49:46

标签: ckeditor

我需要使用ckEditor在加载时动态更改背景颜色 它所在的页面是一个动态加载页面,用户具有特定的bg颜色。 我无法加载它必须只是编辑器主体背景颜色的CSS

所以我试过

window.onload=function(){
    CKEDITOR.instances.editor_data.addCss( 'body { background-color: #efefef; }' );
}

我没有收到错误,但也没有得到任何更改

我也试过

CKEDITOR.instances.editor_data.addCss( '#cke_editor_data { background-color: #efefef; }' );

2 个答案:

答案 0 :(得分:15)

如果你在window.load期间调用它,那么为时已晚,addCss定义了一些在创建编辑器时加载的css,但它不会修改正在运行的实例。

所以你可以这样(仅使用addCSS):

CKEDITOR.on('instanceCreated', function(e) {
    e.editor.addCss( 'body { background-color: red; }' );
});

或者这(使用编辑过的文档的更通用的方法)

CKEDITOR.on('instanceReady', function(e) {
    // First time
    e.editor.document.getBody().setStyle('background-color', 'blue');
    // in case the user switches to source and back
    e.editor.on('contentDom', function() {
        e.editor.document.getBody().setStyle('background-color', 'blue');
    });
});

答案 1 :(得分:0)

@AlfonsosML 上面的第二个答案非常适合定位编辑器的 body 元素。但是我需要在编辑器中定位 a 标签,发现他的第一个答案打破了它。然后我在评论中尝试了@Doin 提供的解决方案: editor.document.addCssText() 也失败了。 @Doin 善意地更正了 editor.document.appendStyleText() 注释中的代码,但它隐藏在上面。我给他的更正投了一个“有用”的票,希望其他人能更快地看到它。这对我有用。我的工作代码混合了 2:

CKEDITOR.on('instanceReady', function(e) {
    // First time
    e.editor.document.getBody().setStyle('background-color', 'rgba(0,0,0,0.59)');
    e.editor.document.getBody().setStyle('color', 'white');
    e.editor.document.getBody().setStyle('text-align', 'center');
    e.editor.document.appendStyleText( 'a { color: white; }' );
    // in case the user switches to source and back
    e.editor.on('contentDom', function() {
        e.editor.document.getBody().setStyle('background-color', 'rgba(0,0,0,0.59)');
        e.editor.document.getBody().setStyle('color', 'white');   
        e.editor.document.getBody().setStyle('text-align', 'center');
        e.editor.document.appendStyleText( 'a { color: white; }' );
    });
}); 

谢谢