HTML5 Mestre dos Mestres • Aula Suprema 37

JavaScript no HTML

HTML estrutura, CSS apresenta e JavaScript adiciona comportamento. O Mestre conecta lógica ao documento sem destruir performance, semântica, acessibilidade e organização profissional.

NARRAÇÃO MESTRE

Narrador Mestre

Ouça a aula, revise blocos e estude com foco.

Pronto para narrar. As vozes disponíveis dependem do navegador e do sistema.

Abertura de impacto

JavaScript é o sistema nervoso da página

Uma página só com HTML e CSS pode ser bonita, mas permanece estática. O JavaScript permite cliques, validações, manipulação do DOM, feedback ao usuário e integração com APIs do navegador.

Tríade da web:
  • HTML: define o que o conteúdo é.
  • CSS: define como o conteúdo aparece.
  • JavaScript: define o que o conteúdo faz.
Erro invisível dos iniciantes:

Misturar tudo sem critério: scripts inline espalhados, lógica gigante dentro do HTML, manipulação do DOM antes dos elementos existirem e erros ignorados no console.

Conexão da lógica

A tag script, script interno e script externo

A tag <script> conecta comportamento à página. Ela pode receber código interno ou apontar para um arquivo externo com src.

<!-- Script interno simples -->
<script>
  console.log("Script interno carregado.");
</script>

<!-- Script externo profissional -->
<script src="scripts/app.js" defer></script>

<!-- Script no final do body -->
<body>
  <button id="btn">Clique</button>
  <script src="scripts/app.js"></script>
</body>

<!-- Script no head com defer -->
<head>
  <script src="scripts/app.js" defer></script>
</head>
  • Script interno serve para exemplos pequenos e específicos.
  • Script externo melhora organização, cache e manutenção.
  • Script no final do body roda após o HTML existir.
  • Script no head deve usar estratégia como defer.
  • A tag script precisa de fechamento.
Erros comuns:

Caminho errado em src, esquecer </script>, usar onclick inline em tudo e chamar elementos antes do DOM existir.

Carregamento

defer, async e bloqueio de renderização

Scripts afetam o carregamento da página. Um script comum no head pode bloquear a renderização. O Mestre usa defer para scripts que dependem do DOM e async para scripts independentes.

<!-- Bloqueante se estiver no head -->
<script src="scripts/app.js"></script>

<!-- Recomendado para script que manipula DOM -->
<script src="scripts/app.js" defer></script>

<!-- Bom para script independente, como analytics -->
<script src="scripts/analytics.js" async></script>
  • Comum: baixa e executa imediatamente, podendo travar o HTML.
  • defer: baixa em paralelo e executa depois que o HTML foi analisado.
  • async: baixa em paralelo e executa assim que terminar, sem garantir ordem.
Erro fatal:

Usar async em scripts que dependem de ordem ou que precisam de elementos do DOM já existentes. Isso pode gerar erros de elemento nulo ou variável indefinida.

Interatividade real

Eventos, querySelector, addEventListener, textContent e classList

Eventos são ações do usuário ou do navegador. Com addEventListener, o JavaScript escuta cliques, envios de formulário e digitação sem poluir o HTML.

const botao = document.querySelector("#btn-mestre");
const texto = document.querySelector("#texto-dinamico");

if (botao && texto) {
  botao.addEventListener("click", function () {
    texto.textContent = "Texto alterado com JavaScript.";
    texto.classList.toggle("destacado");
  });
}

Este texto será alterado com JavaScript.

Formulário com preventDefault

formulario.addEventListener("submit", function (event) {
  event.preventDefault();

  if (email.value.trim() === "") {
    mensagem.textContent = "Erro: preencha o e-mail.";
    mensagem.classList.add("erro");
    return;
  }

  mensagem.textContent = "Sucesso: formulário validado.";
});
Organização profissional

Boas práticas para JavaScript no HTML

O Mestre mantém a lógica organizada, testa no DevTools e entrega feedback acessível. JavaScript deve complementar a estrutura, não virar bagunça dentro dela.

projeto/
  index.html
  styles/
    style.css
  scripts/
    app.js

<script src="scripts/app.js" defer></script>
<script src="scripts/main.js" type="module"></script>

console.log("DOM carregado e script pronto!");
  • Separe estrutura, estilo e comportamento.
  • Prefira arquivo externo para lógica real.
  • Use nomes sem espaço e sem acento.
  • Use scripts/app.js ou nomes claros.
  • Use defer para scripts que manipulam DOM.
  • Use async apenas para scripts independentes.
  • Use type="module" para módulos modernos.
  • Evite onclick inline.
  • Verifique se o elemento existe antes de manipular.
  • Não dependa apenas de alert.
  • Use aria-live para feedback dinâmico.
  • Abra o Console e corrija erros vermelhos.
Desafio Mestre

Página HTML com JavaScript Integrado

Missão: criar o arquivo javascript-integrado-html.html demonstrando domínio da tríade HTML, CSS e JavaScript com organização, performance e acessibilidade.

Requisitos obrigatórios

  • Arquivo javascript-integrado-html.html.
  • Doctype HTML5 e html lang="pt-BR".
  • Head completo com charset, viewport, title e meta description.
  • Body com header, nav, main, section, article, aside e footer.
  • H1 com “Página HTML com JavaScript Integrado”.
  • Section introdutória explicando o papel do JavaScript no HTML.
  • Nav interno com links para pelo menos 4 seções.
  • Pelo menos 4 sections com h2.
  • Explicação clara da diferença entre HTML, CSS e JavaScript.
  • Exemplo de script interno.
  • Exemplo de script externo com src.
  • Exemplo explicando defer.
  • Exemplo explicando async.
  • Botão funcional manipulado por JavaScript.
  • Bloco de texto que muda com textContent.
  • Classe CSS alternada com classList.toggle.
  • Formulário com submit interceptado por preventDefault.
  • Mensagem de feedback acessível com aria-live.
  • Explicação de addEventListener.
  • Explicação de querySelector.
  • Explicação de type="module".
  • Lista com pelo menos 12 boas práticas.
  • Checklist de testes no DevTools.
  • Footer com nome do aluno, ano e link para voltar ao topo.
Erros que reprovam:
  • Usar onclick inline em todo o projeto.
  • Script no head sem defer tentando manipular DOM.
  • Arquivo JS com caminho quebrado.
  • Esquecer o fechamento da tag script.
  • Usar preventDefault sem feedback ao usuário.
  • Ignorar erros vermelhos no DevTools.
Quiz com gabarito

15 perguntas para provar domínio

  1. Qual tag incorpora JavaScript no HTML? <script>.
  2. Qual atributo aponta para arquivo externo? src.
  3. HTML é responsável por quê? Estrutura.
  4. CSS é responsável por quê? Apresentação visual.
  5. JavaScript é responsável por quê? Comportamento e lógica.
  6. O que defer faz? Executa o script após o HTML ser analisado.
  7. O que async faz? Executa assim que o download termina, sem garantir ordem.
  8. Melhor método para ouvir eventos? addEventListener.
  9. Como selecionar um ID com querySelector? document.querySelector("#id").
  10. Como alterar texto via JS? textContent.
  11. Como alternar classe? classList.toggle().
  12. O que preventDefault faz? Cancela o comportamento padrão do evento.
  13. Por que evitar onclick inline? Porque mistura estrutura e comportamento.
  14. Para que serve type="module"? Permite módulos modernos com import/export.
  15. Onde ver erros de JavaScript? No Console do DevTools.
GitHub

Registre sua página com JavaScript integrado

git status
git add .
git commit -m "aula-37: cria pagina html com javascript integrado"
git push
  • git status: verifica arquivos HTML e JS alterados.
  • git add .: prepara tudo para versionamento.
  • git commit: documenta a integração do JavaScript com HTML.
  • git push: publica a evolução no portfólio remoto.
Resumo Mestre

JavaScript dá comportamento ao HTML

O JavaScript é a camada de lógica da página. O Mestre separa responsabilidades, carrega scripts com estratégia, manipula DOM com segurança, entrega feedback acessível e nunca ignora o Console.

Nota final: 10/10 Supremo.

Esta aula está no nível Mestre dos Mestres porque ensina integração real entre estrutura e lógica: performance, eventos, DOM, acessibilidade, organização, DevTools e mentalidade profissional.