Javascript CKEditor仅显示一次对话框窗口
你好,我在过去的一天里一直在做这个。 我为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.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按钮时打开对话框的命令。