如何在运行时为内联编辑器加载新的editorConfig?

时间:2017-12-05 18:45:08

标签: javascript ckeditor

我已运行Toolbar Configurator从工具栏中删除一些不需要的项目。我可以得到工具栏配置,其中包含一些javascript代码,它们以这样的方式开始:

CKEDITOR.editorConfig = function( config ) {
    config.toolbarGroups = [

但是,在实例化特定编辑器而不是全局使用它时,我不清楚如何使用它。在我实例化有问题的编辑器之前,我尝试在我的代码中粘贴它,但它显示了包含不需要的项目的完整工具栏。我目前还在进行其他一些CKEDITOR.configCKEDITOR.on作业,这些作业确实有效。

我还尝试通过将config更改为editor.config来修改函数中的配置代码(其中编辑器来自"编辑器"传递给回调的事件字段)并在CKEDITOR.on("instanceReady")的回调中初始化它,但也没有用。

然后我看到this question并尝试使用替换函数,如下所示:

CKEDITOR.on("instanceReady", function(evt) {
    ...
    CKEDITOR.replace(evt.editor.name, {
        toolbarGroups: [
           ...
        ],

        removeButtons: "..."
    })
    ...

这也不起作用!

然后我尝试将配置器中的原始配置粘贴到一个新文件" config2.js"在我的服务器as this page suggests should work上的ckeditor目录中,并将替换调用更改为:

CKEDITOR.replace(evt.editor.name, {
    customConfig: "config2.js"
})

即使我用" ../ ckeditor / config2.js"替换字符串,这也不起作用。查看网络请求,我发现它甚至没有尝试请求" config2.js"来自任何地方。

如果它有任何区别,我使用CKEDITOR.inline(div)启动编辑器,据我所知,我必须在事件回调中执行配置。

我也试过从" instanceCreated"中调用替换函数。回调 - 这导致无限循环/最大递归超出错误。我也在" instanceLoaded"中尝试过它。事件,也没有效果。

更新: 我刚刚在控制台中注意到,当它尝试调用replace时会抛出此错误:

Uncaught The editor instance "note1681" is already attached to the provided element.

所以看来我正在做错误的替换。

1 个答案:

答案 0 :(得分:0)

我认为在初始化实例后无法隐藏按钮(更改工具栏)。但是,您可以使用新工具栏重新创建ckeditor。 首先,您需要在创建新实例之前销毁当前实例。

Sub STOMacro() Dim App, Connection, session As Object Set SapGuiAuto = GetObject("SAPGUI") Set App = SapGuiAuto.GetScriptingEngine Set Connection = App.Children(0) Set session = Connection.Children(0) If session Is Nothing Then Set session = Connection.Children(Int(ses)) End If If MsgBox("Are you sure you want to acknowledge these STOs?", vbYesNo, "Complete STOs?") = vbNo Then Exit Sub End If OrderCounter = Range("A:A").Find("*", Range("A64999"), xlValues, xlWhole, xlByRows, xlPrevious).Row For i = 1 To OrderCounter Application.DisplayAlerts = False STO = Range("A" & i).Value Application.StatusBar = "Acknowledging STO " & i & " out of " & OrderCounter session.findById("wnd[0]").maximize session.findById("wnd[0]/tbar[0]/okcd").Text = "/nzvmonitor" session.findById("wnd[0]").sendVKey 0 session.findById("wnd[0]/tbar[1]/btn[17]").press session.findById("wnd[1]/usr/txtV-LOW").Text = "STOPrint" session.findById("wnd[1]/usr/txtENAME-LOW").Text = "" session.findById("wnd[1]/usr/txtV-LOW").CaretPosition = 14 session.findById("wnd[1]/tbar[0]/btn[8]").press session.findById("wnd[0]/usr/ctxtS_DLVRY-LOW").Text = "" & STO & "" session.findById("wnd[0]/usr/ctxtS_DLVRY-LOW").SetFocus session.findById("wnd[0]/usr/ctxtS_DLVRY-LOW").CaretPosition = 10 session.findById("wnd[0]").sendVKey 8 session.findById("wnd[0]/usr/cntlZVR_OMONITOR_C1/shellcont/shell").currentCellColumn = "" session.findById("wnd[0]/usr/cntlZVR_OMONITOR_C1/shellcont/shell").selectedRows = "0" session.findById("wnd[0]/usr/cntlZVR_OMONITOR_C1/shellcont/shell").pressToolbarButton "RCPT" session.findById("wnd[0]").sendVKey 3 session.findById("wnd[1]/usr/btnBUTTON_1").press session.findById("wnd[1]").sendVKey 0 session.findById("wnd[0]/usr/cntlZVR_OMONITOR_C1/shellcont/shell").pressToolbarButton "&PRINT_BACK" session.findById("wnd[1]").sendVKey 0 session.findById("wnd[1]").sendVKey 13 'This is where the print dialogue pops up but I can't interact with it Next i MsgBox ("All STOs acknowledged and printed.") Application.StatusBar = "" End Sub

对于快速切换工具栏,我建议在配置文件中使用自定义变量。

在ckeditor / config.js中添加工具栏版本


 CKEDITOR.instances.note1681.destroy();
 CKEDITOR.replace('note1681');

使用它启动ckeditor

editor.my_toolbar  = [['Sourcedialog','Cut','Copy']];