ckeditor使用具有不同工具栏配置的类名替换textarea

Ste*_*hen 5 ckeditor

我使用以下代码将ckeditor添加到我的页面.

<textarea class="ckeditor" name="editor1"></textarea>
Run Code Online (Sandbox Code Playgroud)

我想定义一些工具栏配置,因为我的应用程序中并非所有textareas都需要一个完整的工具栏.我已经为我的需求定制了默认的工具栏配置,但是想要进一步细分到我的一些textareas的更基本的工具栏.

如果我使用class属性设置ckeditor,有没有办法做到这一点?

ole*_*leq 2

对于按类名创建的编辑器不可能有不同的配置。CKEDITOR.config在这种情况下,仅考虑全局。

对于这个问题仍然有简单的解决方法。首先,将此脚本放在文档的顶部:

<script>
    CKEDITOR.replaceClass = null; // Disable replacing by class
</script>
Run Code Online (Sandbox Code Playgroud)

现在为每个要替换的属性定义data-custom-config属性(如config.customConfig),如下所示:<textarea>

<textarea class="ckeditor" data-custom-config="myCustomConfig.js">
    Moo
</textarea>
Run Code Online (Sandbox Code Playgroud)

最后使用以下代码手动按类名替换编辑器(假设您的类是ckeditor)。此代码将ckeditor用属性中定义的配置驱动的 CKEditor 实例替换类的所有文本区域data-custom-config

var textareas = Array.prototype.slice.call( document.getElementsByClassName( 'ckeditor' ) ),
    textarea, cfg, customCfg;

while ( ( textarea = textareas.pop() ) ) {
    textarea = new CKEDITOR.dom.element( textarea );
    cfg = {};

    if ( ( customCfg = textarea.getAttribute( 'data-custom-config' ) ) )
       cfg[ 'customConfig' ] = customCfg;

    CKEDITOR.replace( textarea.getId(), cfg )
}
Run Code Online (Sandbox Code Playgroud)

现在最重要的是樱桃。将您的自定义工具栏配置放入myCustomConfig.js

CKEDITOR.editorConfig = function( config ) {
    config.toolbar = [
        { name: 'basicstyles', items: [ 'Bold', 'Italic' ] }
    ];
};
Run Code Online (Sandbox Code Playgroud)

当然,您可以修改此代码以涉及 jQuery 以便更轻松地选择元素,使用一些对象文字代替等等config.customConfig。这只是如何解决问题的展示。