Acerca de este problema HTML
El atributo language se usaba en los primeros tiempos de HTML para especificar el lenguaje de scripting de un bloque <script>, típicamente establecido a valores como "JavaScript" o "VBScript". Fue deprecado en HTML 4.01 (en favor del atributo type) y ahora está completamente obsoleto en el HTML Living Standard. Aunque los navegadores aún lo reconocen por compatibilidad hacia atrás, no tiene ningún propósito funcional y activa una advertencia de validación.
El elemento <script> acepta varios atributos estándar, pero los dos más comunes son type y src. El atributo type especifica el tipo MIME o tipo de módulo del script (por ejemplo, "module" o "application/json"), y src apunta a un archivo de script externo. Al escribir JavaScript estándar, puedes omitir type completamente porque "text/javascript" es el predeterminado. Sin embargo, el atributo language siempre debe eliminarse: no es un sustituto válido para type y no tiene efecto en los navegadores modernos.
Por qué esto importa
- Cumplimiento de estándares: Usar atributos obsoletos significa que tu HTML no cumple con la especificación HTML actual. Esto puede causar errores de validación que oculten problemas más importantes en tu marcado.
-
Claridad del código: El atributo
languagees engañoso para los desarrolladores que pueden no darse cuenta de que no es funcional. Eliminarlo mantiene tu código limpio y más fácil de mantener. - A prueba de futuro: Aunque los navegadores actualmente toleran el atributo, no hay garantía de que continúen haciéndolo indefinidamente. Depender de características obsoletas es un riesgo de mantenimiento.
Cómo solucionarlo
Simplemente elimina el atributo language de tus elementos <script>. Si estás usando JavaScript (la gran mayoría de los casos), no se necesita reemplazo. Si necesitas especificar un tipo no predeterminado, usa el atributo type en su lugar.
Ejemplos
❌ Obsoleto: usando el atributo language
<script language="JavaScript">
console.log("Hello, world!");
</script>
<script language="JavaScript" src="app.js"></script>
✅ Corregido: atributo eliminado
Para JavaScript inline, simplemente omite el atributo:
<script>
console.log("Hello, world!");
</script>
Para scripts externos, solo se necesita src:
<script src="app.js"></script>
✅ Usando el atributo type cuando sea necesario
Si necesitas especificar un tipo de script — por ejemplo, un módulo ES o un bloque de datos — usa el atributo estándar type:
<script type="module" src="app.js"></script>
<script type="application/json">
{ "key": "value" }
</script>
Ten en cuenta que type="text/javascript" es válido pero redundante, ya que JavaScript es el predeterminado. Puedes omitirlo sin problemas para scripts estándar.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.