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

Chrome exibe diferente dos outros navegadores

Olá, Flávio. Tudo bem? Cara, quando eu executo meu código pelo Chrome o resultado só aparece após o fim do loop abaixo. Ou seja, primeiramente digito quantas vezes quero repetir, entra no loop e digito os números para me dar o antecessor deles. Só que enquanto vou digitando, o navegador fica em branco e somente aparece o resultado depois que o loop encerra. Isso só acontece no Chrome, nos demais funciona perfeitamente. Saberia me dizer o porquê?

<meta charset="utf-8">
<script>
    function pulaLinha(){
        document.write("<br>");
    }
    function mostra(frase){
        document.write(frase);
        pulaLinha();
    }

    var quantosNumeros = parseInt(prompt("Quantidade de números a serem comparados"));
    var repita = 1;
    while(repita <= quantosNumeros){
        var numeroRequisitado = parseInt(prompt("Digite um número?"));
        var numeroAntecessor = numeroRequisitado - 1;
        mostra("O antecessor de " + numeroRequisitado + " é " + numeroAntecessor);
        repita++;
    }
    mostre("Saiu do loop");
</script>
2 respostas
solução!

Boa tarde Giovani!

Vou tentar explicar sem entrar em muito detalhe técnico, porque o foco neste treinamento é lógica de programação e não os detalhes de como o JavaScript funciona. Tudo bem?

O Chrome por debaixo dos panos agenda a escrita na tela com document.write para ser aplicada apenas quando todas as linhas do seu HTML forem lidas, inclusive script. É uma maneira que ele arrumou para ser mais performático.

Então, quando você dentro do loop while fica chamando o prompt, sua página ainda não carregou totalmente, pois esta ainda dentro do while. É por isso que quando o loop termina tudo é escrito na tela.

Outros navegadores podem adotar uma política diferente da do Chrome para a atualizar a tela, por isso o resultado diferente.

Digo para você não se preocupar com isso, pois sua lógica esta correta e é isso que importa neste curso que não cobra do aluno conhecimentos técnicos da linguagem JavaScript e desses detalhes dos navegadores.

Se você se identificou com a linguagem JavaScript e decidiu avançar nesta linguagem, você aprenderá formas mais eficazes (um pouco mais complexas) para lidar com situações como essa e garantir que o comportamento do seu código seja o mesmo entre navegadores.

Tudo bem meu aluno?

Show de bola. Muito obrigado, professor!!