Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] Problema com responsiveVoice

Coloquei o codigo do responsiveVoice e na hora de testar cliquei em Allow e ela fala a frase do 'h1' (Jogo do numero Secreto) e não como na aula que eles mostram a frase do 'p' (Escolha um numero de 1 a 10). Segue codigo abaixo se alguem puder ajudar.

let listaDeNumerosSorteados = []; let numeroLimite = 10; let numeroSecreto = gerarNumeroAleatorio(); let tentativas = 1;

function exibirTextoNaTela(tag, texto) { let campo = document.querySelector(tag); campo.innerHTML = texto; responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate:1.2}); } function exibirMensagemInicial(){ exibirTextoNaTela('h1', 'Jogo do Numero Secreto'); exibirTextoNaTela('p', 'Escolha um numero entre 1 e 10'); } exibirMensagemInicial();

function verificarChute() { let chute = document.querySelector('input').value;

if (chute == numeroSecreto) { exibirTextoNaTela('h1', 'Acertou'); let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa'; let mensagemTentativas = Voce descobriu o numero secreto com ${tentativas} ${palavraTentativa}; exibirTextoNaTela('p', mensagemTentativas); document.getElementById('reiniciar').removeAttribute('disabled'); } else { if (chute > numeroSecreto) { exibirTextoNaTela('p', 'O Numero secreto e menor'); } else { exibirTextoNaTela('p', 'O Numero secreto e maior') } tentativas++; limparCampo(); } }

function gerarNumeroAleatorio() { let numeroEscolhido = parseInt(Math.random() * numeroLimite + 1); let quantidadeDeElemantosNaLista = listaDeNumerosSorteados.length;

if (quantidadeDeElemantosNaLista == numeroLimite) { listaDeNumerosSorteados = []; }

if (listaDeNumerosSorteados.includes(numeroEscolhido)) { return gerarNumeroAleatorio(); } else { listaDeNumerosSorteados.push(numeroEscolhido); console.log(listaDeNumerosSorteados); return numeroEscolhido; } } function limparCampo() { let chute = document.querySelector('input'); chute.value = ''; } function reiniciarJogo() { numeroSecreto = gerarNumeroAleatorio(); limparCampo(); tentativas = 1; exibirMensagemInicial(); document.getElementById('reiniciar').setAttribute('disabled', true) document.querySelector('button').removeAttribute('disabled'); }

4 respostas
solução!

Pelo que entendi, o problema é que o responsiveVoice está falando o texto do h1 ("Jogo do Numero Secreto") em vez do texto do p ("Escolha um numero entre 1 e 10") quando a página é carregada. Isso pode estar acontecendo porque o responsiveVoice.speak() está sendo chamado para ambos os textos, mas o navegador pode estar priorizando a fala do h1.

Aqui estão algumas sugestões para resolver isso:

  1. Atraso na fala do h1: Você pode adicionar um pequeno atraso antes de falar o texto do h1 para garantir que o texto do p seja falado primeiro.

function exibirTextoNaTela(tag, texto) { let campo = document.querySelector(tag); campo.innerHTML = texto; if (tag === 'p') { responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate: 1.2}); } else if (tag === 'h1') { setTimeout(() => { responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate: 1.2}); }, 500); // Atraso de 500ms } } 2. Falar apenas o texto do p: Se você quiser que apenas o texto do p seja falado, pode modificar a função exibirTextoNaTela para falar apenas quando o tag for p.

function exibirTextoNaTela(tag, texto) { let campo = document.querySelector(tag); campo.innerHTML = texto; if (tag === 'p') { responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate: 1.2}); } } 3. Verificar a ordem de execução: Certifique-se de que a função exibirMensagemInicial() está sendo chamada corretamente e que não há outras chamadas ao responsiveVoice.speak() que possam estar interferindo.

  1. Testar em diferentes navegadores: Às vezes, o comportamento pode variar entre navegadores. Teste em diferentes navegadores para ver se o problema persiste.

  2. Verificar a versão do responsiveVoice: Certifique-se de que está utilizando a versão mais recente da biblioteca responsiveVoice. Versões desatualizadas podem ter bugs ou comportamentos inesperados.

  3. Depuração: Adicione console.log() para verificar a ordem de execução e garantir que as funções estão sendo chamadas na ordem correta.

function exibirTextoNaTela(tag, texto) { let campo = document.querySelector(tag); campo.innerHTML = texto; console.log(Exibindo texto na tag ${tag}: ${texto}); responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate: 1.2}); } 7. Verificar permissões do navegador: Certifique-se de que o navegador tem permissão para usar a API de síntese de voz e que não há bloqueios ou restrições.

  1. Testar em um ambiente limpo: Crie um exemplo mínimo reproduzível em um novo arquivo HTML e JavaScript para isolar o problema e verificar se o comportamento persiste.

Exemplo de código ajustado:

Espero que ajude. , resumo o responsiveVoice.speak() só é chamado para o texto dentro da tag p, o que deve resolver o problema de falar o texto do h1 primeiro. Se precisar de mais alguma ajuda, estou à disposição!

Deu certo! Muito obrigada.

disponha