CKEditor自定义工具栏配置

时间:2014-01-24 13:08:22

标签: javascript ckeditor

我已经在本论坛和CKEditor网站上查看过有关此主题的几个问题,但到目前为止没有任何帮助。首先,我在SharePoint 2010网站上运行CKEditor 4.3.2,在jQuery UI模式对话框中使用内联编辑器。将CKEditor添加到对话框是没有痛苦的,但我不能说同样的设置更苗条的工具栏。这是我到目前为止所做的:

  1. slimConfig.js

    CKEDITOR.editorConfig = function(config) {
        config.toolbar = [
            {name: "basicstyles", items: ["Bold", "Italic", "Underline", "Strike", "Subscript", "Superscript", "-", "RemoveFormat"]},
            {name: "paragraph", items: ["NumberedList", "BulletedList"]}
        ];
    }
    
  2. 源JavaScript

    setToolbar("notes");
    setToolbar("access");
    //. . .[several other fields]. . .
    
    function setToolbar(divName) {
        CKEDITOR.replace(divName, {customConfig: "/customConfigs/slimConfig.js"});
    }
    
  3. 此外,我已将目标字段设置为div,使用contenteditable设置为true,如下所示:

    <div id="notes" contenteditable="true"></div>
    

    脚本似乎运行良好,直到遇到ckeditor.js第308行的异常,其中错误文本为“编辑器实例已附加到提供的元素”。经过几个步骤后,它返回到第308行的同一区域,此时我得到一个终端异常,并显示消息“异常抛出但未捕获。”

    我相信我现在已经正确设置了一切,但不知道该怎么做这个错误。有没有人有设置自定义工具栏的经验?

1 个答案:

答案 0 :(得分:1)

默认情况下,CKEditor会使用内联编辑器替换contenteditable="true"的所有元素。因此,当您尝试再次替换它时,它会引发错误,因为它没有意义。

如果您想完全控制编辑器,请将CKEDITOR.disableAutoInline设置为false并手动处理所有实例。当然,您始终可以在CKEDITOR.instances对象中找到您的实例,并根据需要调用editor.destroy()

请参阅http://docs.ckeditor.com/#!/guide/dev_inline