首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CKEditor小部件:如何在onLoad中附加css

CKEditor小部件:如何在onLoad中附加css
EN

Stack Overflow用户
提问于 2014-02-04 15:10:08
回答 1查看 1.3K关注 0票数 0

我正在编写一个CKEditor小部件。由于我试图使它易于分发,我想使我的css外部。当这种语法起作用时:

代码语言:javascript
复制
CKEDITOR.plugins.add('myplugin', {
    requires: 'widget',
    icons: 'myplugin',
    init: function(editor) {
        CKEDITOR.dialog.add('myplugin', this.path + 'dialogs/myplugin.js');
        var self = this;
        editor.on('contentDom', function() {
            editor.document.appendStyleSheet(CKEDITOR.getUrl(self.path + 'css/style.css'));
        });
    }
});

我发现CKSource在他们的image2小部件中使用onLoad: function(editor){}来附加css。这看起来比我的代码更规范。不过,我得到了editor = undefined。陷阱是什么?

更新:

我使用框架选项,我肯定希望通过.appendStyleSheet()保持干燥到面向用户的页面,以及wysiwyg框架编辑器。但是,我仍然对init/beforeInit:function(编辑器)有问题,在这里,editor似乎没有填充document属性。但是,当我执行window.ed = editor时,一旦页面准备就绪,就可以访问控制台中的window.ed.document。那么,那里有什么延迟的承诺吗?也许我正在使事情复杂化,但我肯定想要附加一个可分发的样式表,并轻松地删除它。

我发现这个很管用:

代码语言:javascript
复制
    beforeInit: function(
        var ccss = CKEDITOR.config.contentsCss;
        if(typeof ccss == 'string'){
            ccss = [ccss];
        }
        ccss.push('/css/style.css'); // <-- my css installed at website root

        CKEDITOR.config.contentsCss = ccss;
        console.log(CKEDITOR.config.contentsCss);
    },

虽然孤立的css样式表的问题听起来可能过于复杂,但我希望在不需要接触现有文件的情况下实现一种易于降级的状态。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-04 19:33:58

注意,在image2插件样式表中没有添加到editor实例中,而是使用CKEDITOR.addCss

代码语言:javascript
复制
CKEDITOR.plugins.add( 'image2', {
    ...
    onLoad: function( editor ) {
        CKEDITOR.addCss( ' ... ' );
    }
} );

editor指定为参数是一个错误--它总是为null。

如果要使用document.appendStyleSheet手动添加样式表,请在initbeforeInit上进行,而不是在onLoad上。

尽管如此,您应该知道,对于一个文档,contentDom将被多次触发,例如在设置数据时。因此,在您的例子中,样式表将被添加很多次。因此,如果要为框架编辑器(使用iframe的编辑器)添加样式表,可以使用config.contentsCss,如果要为内联编辑器添加样式表,则可以自由调用:

代码语言:javascript
复制
CKEDITOR.document.appendStyleSheet( ... );

在插件的onLoad中(只会被调用一次)。因此,您很可能同时做这两件事,来处理内联编辑器和框架编辑器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21556106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档