从对话框html元素访问ckeditor函数,而不使用" onOk"

时间:2016-12-13 11:32:45

标签: javascript ckeditor

我尝试使用html元素创建自己的插件和对话框。单击html元素时,我希望将一些文本添加到编辑器中。我无法找到绕过onOk功能的方法。

如果我在editor.insertHtml(' some code ')函数中使用onOk,则会添加文本,但如果我想在外面使用它,则会出现Uncaught TypeError: Cannot read property 'editor' of undefined(…)错误。

访问编辑器的正确方法是什么?

CKEDITOR.dialog.add( 'smiley2', function( editor ) {
    return {
        title: 'Abbreviation Properties',
        minWidth: 400,
        minHeight: 200,
        contents: [
            {
                id: 'tab-basic',
                label: 'Basic Settings',
                elements: [
                    {
                        type: 'html',
                        id: '2',
                        label: 'Explanation',
                        html: "<div onclick=\"editor.insertHtml(' some code ')\">add code</a></div></div>"
                    }
                ]
            }
        ],
         onShow : function()
            {          
            document.getElementById(this.getButton('ok').domId).style.display='none'; // disapper ok btn
            },
        onOk: function() {

            editor.insertHtml(' abbr ');
        }
    };
});

2 个答案:

答案 0 :(得分:0)

CKEDITOR.dialog.add( 'smiley2', function( editor ) {

    var onChoice = function(evt) {
            var target;
            target = new CKEDITOR.dom.element(evt); 
            editor.insertHtml("SMILEY YES!");
            CKEDITOR.dialog.getCurrent().hide();
    };
    var onClick = CKEDITOR.tools.addFunction(onChoice); 

    return {
        title: 'Abbreviation Properties',
        minWidth: 400,
        minHeight: 200,
        buttons: [CKEDITOR.dialog.cancelButton],
        contents: [
            {
                id: 'tab-basic',
                label: 'Basic Settings',
                elements: [
                    {
                        type: 'html',
                        id: '2',
                        label: 'Explana22tion',
                        html: "<div  onclick=\"CKEDITOR.tools.callFunction(" + onClick +", this); return false;\" >111111</a></div></div>"
                    }
                ]
            }
        ] 

    };
});

答案 1 :(得分:-1)

点击示例中的div元素时,editor不在您的范围内。您需要获取编辑器对象并使用其insertHtml方法;

CKEDITOR.instances.editor1.insertHtml('your text`)

此示例假定您的textarea ID为editor1