如何在初始化ckeditor后更改加载的样式表

时间:2010-02-17 11:32:40

标签: ckeditor

是否可以动态更改ckeditor实例的加载样式表?

即。我有一个ckeditor实例与以下配置: CKEDITOR.replace('_ content',{“resize_enabled”:true,“customConfig”:“/ kmt / js / ckeditor_config.js”,“contentsCss”:“/ custom / ckeditorstyle.css”,“contentWidth”:“240” });

不是很复杂。之后我想让用户动态更改contentscss属性......

2 个答案:

答案 0 :(得分:4)

您可以将this SO question(如何在运行时动态添加样式表)的答案中给出的代码与接受的answer to this SO question(如何访问CKEditor的body元素结合起来JavaScript中的实例)。

答案 1 :(得分:3)

Thanx to Pekka,我通过以下方式实现了解决方案:

$('#stylesheeetSelector').change(function() {
    $.post('/getStylesheet', {id: $(this).val()}, function(data) {
        for(i in CKEDITOR.instances) {
            var linkElement = $(CKEDITOR.instances[i].document.$).find('link');
            if (data.editorStylesheet > 0) {
                if (linkElement.length == 0) {
                    $(CKEDITOR.instances[i].document.$).find('head').append('<link rel="stylesheet" type="text/css" href="'+ data.editorStylesheet +'">');
                } else {
                    linkElement.attr('href', data.editorStylesheet)
                }
            } else if (linkElement.length > 0) {
                linkElement.remove();
            }
        }
    });
});

它的工作原理是获取一个JSON对象,该对象填充了样式表URL(最重要的是其他东西),并设置(或删除,如果没有)选定的样式表......

干净简单!