您好我过去一直坚持这一点。 我为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
}
});
}
有关如何使其正常工作的任何建议?谢谢!