Здравствуйте,
В коде, где программно меняете статус чекбокса:
if(command.toLowerCase() === 'красный'){
document.querySelector('#show_red').checked = true;
}
нужно также программно отправить событие change, например, вот так:
document.querySelector('#show_red').dispatchEvent(new Event('change'));
И вторичное, но к пазлам не относится. Микрофон отключается после каждой команды.
Там каждый раз вызывается recognition.stop()
, чтобы обработать речь и выдать результаты, и соответственно браузер перестает слушать микрофон. Его нужно перезапускать через recognition.start()
например где-нибудь в обработчике recognition.onend = function() {...}
. Можете ещё попробовать воспользоваться библиотекой https://github.com/TalAter/annyang, которая использует тот же самый SpeechRecognition API – там, вроде, такие вещи настроены по умолчанию.
Co-founder and lead developer at Soft8Soft.