首先,我首先要说我是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>

相反,谷歌浏览器控制台报告:
"Uncaught TypeError: Cannot call method 'getData' of undefined "
现在,当我改变
var ckvalue = CKEDITOR.instances.editor.getData();


var ckvalue = CKEDITOR.instances.editor1.getData();

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

这是我正在谈论的工作示例:http://jsfiddle.net/s3aDC/6/

最佳答案

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

此外,事件回调是在editor上下文中执行的,因此this指向editor:

editor.on('blur', function(event) {
    var ckvalue = this.getData();
    alert(ckvalue);
});

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

而且您绝对应该在代码中avoid global variables! ;)

09-27 03:54