4

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

即我有一个具有以下配置的ckeditor实例:CKEDITOR.replace('_content', {"resize_enabled":true, "customConfig":"/kmt/js/ckeditor_config.js","contentsCss":"/custom/ckeditorstyle .css","contentWidth":"240"});

不是很复杂。之后我想允许用户动态更改 contentcss 属性...

4

2 回答 2

4

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

于 2010-02-17T12:37:25.523 回答
3

感谢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();
            }
        }
    });
});

它的工作原理是获取一个填充了(除其他外)样式表 URL 的 JSON 对象,并设置(如果不存在,则删除)选定的样式表......

干净简单!

于 2010-02-17T14:16:55.980 回答