2014-01-24 150 views
0

我已经浏览了此论坛和CKEditor网站上关于此主题的几个问题,但目前为止没有任何帮助。首先,我在SharePoint 2010网站上运行CKEditor 4.3.2,在jQuery UI模式对话框中使用内联编辑器。将CKEditor添加到对话框是无痛的,但我不能说建立一个更细的工具栏是一样的。这是我到目前为止已经完成: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"}); 
    } 
    

此外,我已经设置了目标领域div使用contenteditable设置为true,如下所示:

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

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

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

回答

1

默认情况下,CKEditor用内联编辑器替换contenteditable="true"的所有元素。所以当你试图再次替换它时,它会抛出一个错误,因为它没有任何意义。

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

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

+0

我很欣赏反馈,oleq!不幸的是,我对CKEDITOR很陌生,即使有文档,我也没有多少运气。我在setToolbar调用上方添加了CKEDITOR.disableAutoInline = true行,并添加了CKEDITOR.inline(divName);作为setToolbar()中的第一行。这是正确的方向吗?你能提供一个例子吗? – AurumPotabile