Integración con JavaScript (<script>)
Aprende cómo HTML5 se comunica con JavaScript: inclusión de scripts, optimización con async y defer, la etiqueta <noscript> y manipulación básica del DOM.
HTML y JavaScript: Estructura e Interactividad
Mientras que HTML aporta la estructura y el contenido, JavaScript (JS) es el lenguaje de programación que dota a las páginas web de interactividad dinámica, validación en vivo, animaciones complejas y comunicación con servidores sin recargar la pantalla.
<script src="main.js" defer></script>
¿Dónde colocar los Scripts?: defer vs async
Por defecto, cuando el navegador encuentra una etiqueta <script>, pausa la lectura del HTML hasta descargar y ejecutar el archivo JS. Para evitar que la página se quede congelada en blanco, HTML5 ofrece dos atributos modernos:
| Atributo | Descarga | Momento de Ejecución | Uso Recomendado |
|---|---|---|---|
defer |
En segundo plano (asíncrona). | Se ejecuta en orden exacto una vez que todo el HTML ha terminado de analizarse. | El estándar recomendado para la lógica de tu aplicación, librerías y componentes dependientes. |
async |
En segundo plano (asíncrona). | Se ejecuta inmediatamente apenas se descarga, sin importar el orden ni el estado del DOM. | Scripts independientes que no tocan el DOM ni dependen de otros (ej: Google Analytics, píxeles de seguimiento). |
El Elemento de Respaldo: <noscript>
El elemento <noscript> define contenido alternativo que solo se mostrará si el usuario tiene JavaScript deshabilitado en su navegador o si navega desde un entorno restringido:
<noscript>
<div class="alerta">Esta aplicación requiere JavaScript habilitado para funcionar correctamente.</div>
</noscript>
⚡ Manipulación Dinámica del DOM con JavaScript
Haz clic en los botones para modificar dinámicamente el texto y el color de un elemento HTML mediante JavaScript:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>HTML y JavaScript</title>
<style>
body { font-family: Arial, Helvetica, sans-serif; padding: 25px; background: #f8fafc; }
.card-interactiva { max-width: 500px; background: white; border: 1px solid #cbd5e1; border-radius: 10px; padding: 24px; }
.caja-mensaje {
background: #eff6ff;
border: 1px solid #bfdbfe;
border-radius: 8px;
padding: 16px;
margin: 15px 0;
font-size: 1.1rem;
color: #1e3a8a;
transition: all 0.3s ease;
}
.btn-accion {
background: #0284c7;
color: white;
border: none;
padding: 8px 14px;
border-radius: 6px;
font-weight: 600;
cursor: pointer;
margin-right: 8px;
}
.btn-accion:hover { background: #0369a1; }
</style>
</head>
<body>
<div class="card-interactiva">
<h3 style="margin-top: 0; color: #0f172a;">Control del DOM en Tiempo Real</h3>
<div id="caja-estado" class="caja-mensaje">
Estado actual: Esperando interacción...
</div>
<button class="btn-accion" onclick="actualizarTexto()">
Cambiar Texto
</button>
<button class="btn-accion" onclick="cambiarColor()" style="background: #10b981;">
Cambiar Color
</button>
<button class="btn-accion" onclick="resetear()" style="background: #64748b;">
Restablecer
</button>
<!-- Script integrado que manipula los elementos HTML -->
<script>
function actualizarTexto() {
const elemento = document.getElementById('caja-estado');
elemento.innerText = '⚡ ¡Texto modificado exitosamente por JavaScript!';
}
function cambiarColor() {
const elemento = document.getElementById('caja-estado');
elemento.style.background = '#dcfce7';
elemento.style.borderColor = '#86efac';
elemento.style.color = '#15803d';
}
function resetear() {
const elemento = document.getElementById('caja-estado');
elemento.innerText = 'Estado actual: Esperando interacción...';
elemento.style.background = '#eff6ff';
elemento.style.borderColor = '#bfdbfe';
elemento.style.color = '#1e3a8a';
}
</script>
</div>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de HTML5 y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.