Javascript ckeditor getData()似乎无法正常工作

Javascript ckeditor getData()似乎无法正常工作,javascript,ckeditor,Javascript,Ckeditor,首先,我会说我是javascript新手,希望这不是一个完整的问题。也就是说,当用户单击编辑器时,下面的代码应该提醒编辑器的值 <script type='text/javascript'> function openEditor(){ html = "Hello World"; config = { startupFocus : true }; editor = CKEDITOR.appendTo( 'textBox', config, html ); if (editor)

首先,我会说我是javascript新手,希望这不是一个完整的问题。也就是说,当用户单击编辑器时,下面的代码应该提醒编辑器的值

<script type='text/javascript'>
function openEditor(){
html = "Hello World";
config = {
startupFocus : true
};
editor = CKEDITOR.appendTo( 'textBox', config, html );


 if (editor) {
    editor.on('blur', function(event) {
        var ckvalue = CKEDITOR.instances.editor.getData();
        alert(ckvalue);
    });
 }
}
</script>
<html>
<a href='#' onclick='openEditor()'>Open Editor</a><br />
<div id='textBox'></div>
</html>

它起作用了。这让我很困惑,因为我从未声明过editor1实例。我希望有更多经验的人能向我解释为什么editor1可以工作而editor1不能


下面是我所说内容的一个工作示例:

CKEditor从以下位置获取编辑器名称:

  • 如果编辑器未处于“附加到”模式,则textarea/可编辑元素的id或名称属性:
  • 生成唯一编辑器名称的函数
  • 在您的案例中,编辑器是通过
    appendTo()
    方法创建的,因此CKEditor自动生成名称,即
    editor1
    ,然后
    editor2
    ,等等。
    CKEditor.instances
    对象包含其名称下的所有编辑器实例,这就是存在
    CKEditor.instances.editor1
    的原因

    您已将编辑器实例分配给全局
    编辑器
    变量。但这与编辑器名称完全不同——您可以将编辑器实例分配给任意多个变量


    顺便说一句,在使用变量之前,应该使用
    var
    语句声明变量。

    editor
    是一个JS变量,指向
    CKEDITOR.instances.editor1
    。请参见
    editor===CKEDITOR.instances.editor1//true

    此外,事件回调在
    编辑器
    上下文中执行,因此
    指向
    编辑器

    editor.on('blur', function(event) {
        var ckvalue = this.getData();
        alert(ckvalue);
    });
    
    您可以在初始化编辑器时定义它:

    var editor = CKEDITOR.appendTo( 'textBox', {
        on: {
            blur: function( event ) {
                console.log( this.getData() );
            }
        }
    } );
    

    而且你应该在你的代码中

    你能发布你的代码或概念证明吗?贴出的数量很少,很难说。看起来您已经在上面添加了代码,这可能会有所帮助。我将行更改为:var ckvalue=this.getData();现在它就像一个符咒。我必须记住不要使用全局变量。感谢您快速而翔实的回复!
    editor.on('blur', function(event) {
        var ckvalue = this.getData();
        alert(ckvalue);
    });
    
    var editor = CKEDITOR.appendTo( 'textBox', {
        on: {
            blur: function( event ) {
                console.log( this.getData() );
            }
        }
    } );