8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

更改 ckEditor 的背景颜色

Vaccano 1月前

9 0

我需要用我的 ckEditor 加载时动态更改背景颜色,该页面是一个动态加载的页面,用户具有特定的背景颜色。我无法加载它具有的 css ...

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

所以我尝试了

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

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

我也试过了

CKEDITOR.instances.editor_data.addCss( '#cke_editor_data { background-color: #efefef; }' );
帖子版权声明 1、本帖标题:更改 ckEditor 的背景颜色
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Vaccano在本站《jquery》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如果您在 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');
        });
    });
    
  • @AlfonsosML +1,我找到了你的答案,它工作得很好。但是,我在 1 个页面上有多个编辑器。你知道我如何分别定位每个编辑器吗?

  • 每个编辑器都会触发事件,并且 e.editor 包含事件所引用的编辑器,因此您只需检查它(例如它的名称)即可决定如何处理它。

  • 查看 CKeditor v4 的文档,addCss 是 CKEDITOR 对象的一种方法,但不再是编辑器实例的方法,因此您的第一种方法在 v4 中不起作用。相反,您需要使用 editor.document.addCssText()。此外,在第二种方法中,您还需要捕获“mode”事件(或代替“contentDom”),因为在编辑器工具栏中单击 [Source] 两次似乎不会触发 contentDom(我已检查)。在“mode”事件处理程序中,在继续之前检查 editor.mode==='wysiwyg':在源编辑模式下,editor.document 为空。

  • 哎呀... 2 条评论之前,我应该说 editor.document.appendStyleText(),而不是 editor.document.addCssText() - 抱歉!

  • 是的,一年前我回复过关于 CKEditor 3 的一个回答。我没有超能力去猜测他们计划在未来如何修改 CKEditor 的 API,所以我不知道他们会将 addCss 方法移到主 CKEDITOR 对象。第二种方法也曾经有效,但他们破坏了其中的一些功能,你可能不得不重写它才能让它继续工作。

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

    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; }' );
        });
    }); 
    

    谢谢

  • 你也可以为 CKEditor 添加此样式

    .cke_contents{border:solid 1px #696969;background-color:white;}
    
  • 引用 10

    我建议仅对这个特定的编辑器使用 CSS,同时保持您网站上的其他编辑器不变:

    
    .your-div-class__editor .ck-editor .ck-editor__main .ck-content {
        background: rgb(37, 49, 61);
    }
    

    your-div-class__editor 应该创建精确编辑器的位置 <div class="your-div-class__editor">...</div>

    或者,您可以只使用 .ck-content css 选择器并根据 css 的范围为页面(或站点)上的每个 ck-editor 设置内容背景。

返回
作者最近主题: