ckeditor execCommand对话框未显示

时间:2018-10-12 13:33:25

标签: ckeditor

我在ckeditor中创建了一个对话框。

    editor.ui.addButton('blublu',
            {
                label: 'blublu',
                command: 'blublu',
                icon: this.path + 'icons/blublu.png'
            }
    );
    editor.addCommand('blublu', new CKEDITOR.dialogCommand('blublu'));

    CKEDITOR.dialog.add( 'blublu', this.path + 'dialogs/dialog.js' );

如果我按下对话框显示的按钮,一切都很好。现在,我尝试从另一个对话框打开此窗口:

( function() {
    CKEDITOR.dialog.add( 'templates', function( editor ) {
        return {
            title: editor.lang.templates.title,
            contents: [...],
            onHide: function(){
                if(condition)
                    //dostufff;
                this.hide();
                editor.execCommand('blublu');
            }
        }
    }
});

它在第一次加载编辑器时起作用。但是,如果我从toolbar中的按钮打开对话框,然后关闭它,则无法从“模板”对话框中打开对话框。我有深色背景,好像没有显示对话框(对话框除外)。它是隐藏的,仅显示它是不够的,因为它上的所有按钮处理程序均不起作用。

我在控制台中没有错误。

有解决方案吗?

1 个答案:

答案 0 :(得分:1)

我已经使用现有插件对其进行了测试,看来您需要使用setTimeout异步调用execCommand。

setTimeout( function() {
    execCommand( commandName );
} );

如果修复程序不适用于每种浏览器,那么您将不得不增加一些短暂的延迟。我没有更好的解决方案。