Sobre este problema HTML
O atributo language era usado no HTML inicial para especificar a linguagem de script de um bloco <script>, normalmente definido para valores como "JavaScript" ou "VBScript". Foi deprecado no HTML 4.01 (em favor do atributo type) e está agora completamente obsoleto no HTML Living Standard. Embora os navegadores ainda o reconheçam para compatibilidade retroativa, não serve qualquer propósito funcional e gera um aviso de validação.
O elemento <script> aceita vários atributos padrão, mas os dois mais comuns são type e src. O atributo type especifica o tipo MIME ou tipo de módulo do script (por exemplo, "module" ou "application/json"), e src aponta para um ficheiro de script externo. Ao escrever JavaScript padrão, pode omitir type inteiramente porque "text/javascript" é a predefinição. O atributo language, no entanto, deve sempre ser removido — não é um substituto válido para type e não tem qualquer efeito nos navegadores modernos.
Por que isto importa
- Conformidade com padrões: Usar atributos obsoletos significa que o seu HTML não está em conformidade com a especificação HTML atual. Isto pode causar erros de validação que obscurecem questões mais importantes na sua marcação.
-
Clareza do código: O atributo
languageé enganador para programadores que podem não perceber que não é funcional. Removê-lo mantém o seu código limpo e mais fácil de manter. - Preparação para o futuro: Embora os navegadores atualmente tolerem o atributo, não há garantia de que continuarão a fazê-lo indefinidamente. Depender de funcionalidades obsoletas é um risco de manutenção.
Como corrigir
Simplesmente remova o atributo language dos seus elementos <script>. Se está a usar JavaScript (a grande maioria dos casos), não é necessária qualquer substituição. Se precisar de especificar um tipo não predefinido, use o atributo type em vez disso.
Exemplos
❌ Obsoleto: usar o atributo language
<script language="JavaScript">
console.log("Hello, world!");
</script>
<script language="JavaScript" src="app.js"></script>
✅ Corrigido: atributo removido
Para JavaScript inline, simplesmente omita o atributo:
<script>
console.log("Hello, world!");
</script>
Para scripts externos, apenas src é necessário:
<script src="app.js"></script>
✅ Usar o atributo type quando necessário
Se precisar de especificar um tipo de script — por exemplo, um módulo ES ou um bloco de dados — use o atributo type padrão:
<script type="module" src="app.js"></script>
<script type="application/json">
{ "key": "value" }
</script>
Note que type="text/javascript" é válido mas redundante, uma vez que JavaScript é a predefinição. Pode omiti-lo com segurança para scripts padrão.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.