Я хочу, чтобы иметь возможность установить функцию onbroadcast
в SpeechRecognition
после создания нового объекта SpeechRecognition
, чтобы я мог вызвать эту функцию внутренне, если выполняются определенные условия.Установить внешнюю функцию объекта, которая может быть вызвана внутренне
Я хотел был бы иметь возможность установить его так же, как вы установили бы что-то вроде onerror
в webkitSpeechRecognition
. Когда я смотрю на onerror
в Инструментах для разработчиков, похоже, что это может быть сделано через какой-то приемник/сеттер, как то, что описано here, но я не могу быть уверен.
Возможно ли это?
recognition.js:
var SpeechRecognition = function() {
var recognitionObject = new webkitSpeechRecognition();
recognitionObject.onresult = function (event) {
if(event.results.length > 0) {
if (onbroadcast !== null && onbroadcast === 'function') {
onbroadcast('there are results');
}
}
}
recognitionObject.onerror = function (event) {
console.log(event);
}
recognitionObject.onend = function (event) {
console.log(event);
}
recognitionObject.start();
}
SpeechRecognition.prototype.onbroadcast = null;
main.js:
var sr = new SpeechRecognition();
sr.onbroadcast = function(msg) {
document.getElementById('id') = msg;
}
'onupdateraw' и' onbroadcast' являются необъявленными переменными, что вы имели в виду? Я предполагаю, что вы хотите ссылаться на свойство '.onbroadcast' ** вашего экземпляра' SpeechRecognition' - обычно с 'this' [но не в обратном вызове] (http://stackoverflow.com/q/20279484/1048572) как здесь. – Bergi
Извините - 'onupdateraw' был опечаткой. – millarnui
Я хочу установить 'onbroadcast' извне объекта каким-то образом, но назовите его изнутри (если он установлен) – millarnui