Javascript CKEditor仅显示一次对话框窗口

Javascript CKEditor仅显示一次对话框窗口,javascript,jquery,ckeditor,ckeditor4.x,Javascript,Jquery,Ckeditor,Ckeditor4.x,你好,我在过去的一天里一直在做这个。 我为CKEditor制作了一个插件,当用户单击录制按钮时,会打开一个带有语言选择的对话框。一旦用户选择了语言,他们就开始录音。问题是,当用户结束语音识别并希望稍后录制时,对话框窗口会再次提示用户选择语言。我希望这样,当用户选择一种语言并单击“录制”时,对话框窗口不会再次弹出 CKEDITOR.plugins.add('speechtotext', { init: function(editor) { editor.ui.addBu

你好,我在过去的一天里一直在做这个。 我为CKEditor制作了一个插件,当用户单击录制按钮时,会打开一个带有语言选择的对话框。一旦用户选择了语言,他们就开始录音。问题是,当用户结束语音识别并希望稍后录制时,对话框窗口会再次提示用户选择语言。我希望这样,当用户选择一种语言并单击“录制”时,对话框窗口不会再次弹出

CKEDITOR.plugins.add('speechtotext', { 
    init: function(editor) {

        editor.ui.addButton('RecordButton', {
            label: 'Speech to Text',
            command: 'record',
            toolbar: 'insert',
        });

        //Button to end recording
        editor.ui.addButton('StopButton', {
            label: 'End Speech to Text',
            command: 'stop',
            toolbar: 'insert',
        });
        //Command to end Speech to Text Recording
        editor.addCommand('stop', {
            exec: function() {
                //stopRecording();
            }
        });

        //Register the "recordDialog", returns the Dialog object
        CKEDITOR.dialog.add('recordDialog', function() {
            //The definition of the Dialog(the dialog window itself).
            return {
                title: 'Speech to Text Language Selection',
                contents: 
                [{
                    elements: 
                    [{
                        type: 'select',
                        id: 'languageSelect',
                        label: 'Select Language',
                        items: 
                        [
                            //items
                        ],
                        default: 'english',
                        onChange: function() {
                            languageOption = this.getValue();
                            console.log(languageOption);

                            languageSelected = true;
                        } 
                    }]
                }],
                //The code that will execute ok button of the dialog window is pressed.
                onOk: function() {
                    //start recording(){}
                }
            };
        });

        if(languageselected === false){
            //opens up dialog window to prompt user for language selection
            editor.addCommand('record', new CKEDITOR.dialogCommand('recordDialog'));
        }else{
            editor.addCommand('record', {
                exec: function() {
                    //startrecording without prompting user to select language again
                }
            });
        }

    }
});
每当我选择一种语言时,我说languageSelected=true; 所以下次我不会被提示选择另一种语言,但这不会做任何事情,就像它永远不会运行一样。 我开始想,也许我必须销毁插件实例并重新加载它,以便下次它在没有对话框的情况下调用“record”命令

if(languageSelected === false){
   //opens up dialog window to prompt user for language selection
   editor.addCommand('record', new CKEDITOR.dialogCommand('recordDialog'));
}else{
  editor.addCommand('record', {
        exec: function() {
        //startrecording without prompting user to select language again
        }
  });
}

有什么建议可以让它工作吗?谢谢

我猜,您在函数范围内声明了
languageSelected=true
,从外部看不可见。(也是以防万一,在您上面的代码中,
languageselected===false
languageselected不在本例中)。但是从你的代码中,我不明白为什么条件else不总是执行。谢谢你的回复。我通过重写“record”命令解决了这个问题,这样我就不会调用下次单击record按钮时打开对话框的命令。我猜,您在函数范围中声明了
languageSelected=true
,从外部看不可见。(也是以防万一,在您上面的代码中,
languageselected===false
languageselected不在本例中)。但是从你的代码中,我不明白为什么条件else不总是执行。谢谢你的回复。我通过重写“record”命令解决了这个问题,这样我就不会调用下次单击record按钮时打开对话框的命令。