代码之家  ›  专栏  ›  技术社区  ›  ChrisA

如何以编程方式确定CKEditor实例的名称

  •  8
  • ChrisA  · 技术社区  · 15 年前

    VB.NET版本:

    itemEditor = New CkEditor
    cell.Controls.Add(itemEditor)
    

    ... 效果很好。我可以在回帖上找到HTML,然后用它做一些事情。

    onchange 事件。

    那么,如何在JavaScript中获取编辑器实例的名称,以便执行以下操作:

    function GetCkText()
    {
        var htmlFromEditor = CKEDITOR.instances['editorName'].getData();
        // do stuff with htmlFromEditor
    }
    
    6 回复  |  直到 12 年前
        1
  •  16
  •   halfer    11 年前

    假设只有一个编辑器实例:

    for ( var i in CKEDITOR.instances ){
       var currentInstance = i;
       break;
    }
    var oEditor   = CKEDITOR.instances[currentInstance];
    

    下面是JavaScript API所说的 instances .

    下面是定义CKEditor的另一种方法。这里“fck”是输入字段id:

    CKEDITOR.replace( 'fck', {
        customConfig : prefix + 'js/ckeditor/config.js',
        height: 600,
        width: 950
    });
    
    editor = CKEDITOR.instances.fck;
    

    .fck

        2
  •  3
  •   denov    9 年前

    如果您只有一个实例,而您不知道它的名称。

    CKEDITOR.instances[Object.keys(CKEDITOR.instances)[0]].getData()
    
        3
  •  2
  •   ppp    13 年前

    以下代码:

    var allInstances=CKEDITOR.instances;
    for ( var i in allInstances ){
        alert(allInstances[i].name);
    }
    

    对我来说很好。

        4
  •  0
  •   ChrisA    15 年前

    在添加编辑器之后,我向页面添加了一个隐藏字段控件,并将编辑器的ClientId放入其值中:

    Dim hdn As New HiddenField
    With hdn
        .ID = "HiddenField"
        .Value = itemEditor.ClientID
    End With
    cell.Controls.Add(hdn)
    

    .. 然后在JavaScript中,我可以得到隐藏字段,因此编辑器名称如下:

    function GetCkText()
    {
        var hdn = document.getElementById("HiddenField");
        var editorName = hdn.getAttribute("value");
        var editor = CKEDITOR.instances[editorName];
        alert(editor.getData());
        return false;
    }
    

        5
  •  0
  •   dsdsdsdsd    11 年前

    如果您正在使用 CKEDITOR.appendTo(...)

    var lvo_editor = CKEDITOR.appendTo( "my_div" , null , lvs_html ) ; 
    my_global_var  = lvo_editor.name                                 ;
    

    顺便说一下 CKEDITOR.replace(...) 方法允许您定义实例名称(请参阅上面的答案)

        6
  •  0
  •   Valamas ConsultUtah    9 年前

    如果你需要一个 插件 ,至少在版本4+中可以这样做。

    CKEDITOR.currentInstance
    

    CKEDITOR.currentInstance.name