Progreso del curso: 0%
Tema 2.5

Conformidad a estándares

2.5 Conformidad a estándares

La conformidad a estándares en el contexto de los navegadores web es un aspecto fundamental que garantiza la interoperabilidad, accesibilidad y compatibilidad de las aplicaciones y contenidos web en diferentes plataformas y dispositivos. En un entorno donde la diversidad de navegadores, sistemas operativos y dispositivos es cada vez mayor, adherirse a estándares internacionales y específicos del sector se vuelve imprescindible para asegurar que los contenidos multimedia, las aplicaciones web y los componentes interactivos funcionen de manera consistente y predecible.

Este apartado profundiza en los conceptos, principios y prácticas relacionadas con la conformidad a estándares, abordando desde las normativas internacionales que regulan el desarrollo web hasta las mejores prácticas adoptadas por los desarrolladores para garantizar la compatibilidad y la accesibilidad de sus productos digitales. La importancia práctica radica en que una correcta adherencia a estándares reduce los costos de mantenimiento, facilita la actualización de contenidos y mejora la experiencia del usuario final. Desde una perspectiva teórica, también contribuye a la consolidación de un ecosistema web abierto, inclusivo y sostenible.

El conocimiento de estos aspectos es esencial para cualquier profesional del desarrollo web, especialmente en el ámbito de productos multimedia, donde la integración de diferentes tipos de recursos requiere una atención rigurosa a las especificaciones técnicas. La siguiente exposición abordará los conceptos clave, las normativas relevantes, las implicaciones técnicas y las tendencias actuales relacionadas con la conformidad a estándares en navegadores web.

Marco Teórico y Fundamentos

Definiciones y Conceptos Clave

La conformidad a estándares en el desarrollo web se refiere al cumplimiento de un conjunto de especificaciones técnicas establecidas por organismos internacionales o consorcios especializados que definen cómo deben estructurarse, interpretarse y comportarse los contenidos y aplicaciones en los navegadores. Entre estos organismos destacan el World Wide Web Consortium (W3C), responsable de definir muchas de las recomendaciones más relevantes, y el WHATWG, que desarrolla especificaciones en evolución continua.

Los principales estándares relacionados con la conformidad en navegadores incluyen:

  • HTML (HyperText Markup Language): Lenguaje para estructurar contenidos web.
  • CSS (Cascading Style Sheets): Estándar para definir estilos visuales y presentación.
  • JavaScript (ECMAScript): Especificación para programación del lado cliente.
  • ARIA (Accessible Rich Internet Applications): Especificaciones para mejorar accesibilidad.
  • XHTML/XML: Lenguajes para estructuración y transporte de datos.

El cumplimiento implica que los navegadores interpreten correctamente estas especificaciones, permitiendo que los contenidos multimedia, scripts y estilos funcionen como fue previsto por los desarrolladores.

Teorías y Principios

El marco teórico que sustenta la conformidad a estándares se basa en principios fundamentales como:

  1. Interoperabilidad: La capacidad de diferentes sistemas, plataformas y navegadores para interpretar contenidos de manera uniforme.
  2. Accesibilidad: Garantizar que todos los usuarios puedan acceder y utilizar los recursos web, independientemente de sus capacidades o dispositivos.
  3. Sostenibilidad: La creación de contenidos que puedan mantenerse y adaptarse a futuras evoluciones tecnológicas sin necesidad de rediseños completos.
  4. Portabilidad: La facilidad con la que un contenido o aplicación puede trasladarse entre diferentes entornos tecnológicos respetando las especificaciones estándar.

Estos principios se sustentan en el uso correcto de las especificaciones técnicas, la validación continua del código mediante herramientas específicas y la adopción de buenas prácticas en el desarrollo. La adherencia a estos principios favorece un ecosistema web abierto, donde la innovación puede coexistir con la compatibilidad universal.

Desarrollo Teórico

El cumplimiento de estándares requiere una comprensión profunda tanto del contenido técnico como del contexto social y legal en el cual se desarrolla el contenido web. Desde una perspectiva técnica, implica seguir las recomendaciones detalladas por organismos como el W3C, que publica documentos denominados Recomendaciones. Estas recomendaciones contienen reglas sintácticas, semánticas y funcionales que deben ser implementadas por los navegadores para garantizar una interpretación uniforme.

Por ejemplo, HTML5 introdujo nuevas etiquetas semánticas (<article>, <nav>, <section>) que deben ser soportadas por todos los navegadores conforme a la especificación. La no conformidad puede generar problemas como errores en la visualización, dificultades en la accesibilidad o incompatibilidades con tecnologías complementarias como lectores de pantalla o herramientas multimedia interactivas.

Además, el uso correcto de validadores (herramientas automáticas) permite verificar si el código cumple con las especificaciones. Por ejemplo, el validador del W3C para HTML o CSS ayuda a detectar errores sintácticos o incumplimientos antes del despliegue final del producto digital.

A nivel técnico avanzado, también se consideran aspectos como:

  • Cascada y herencia en CSS: Cómo se aplican estilos según especificaciones estándar para mantener coherencia visual.
  • Manejo correcto de eventos en JavaScript: Para garantizar compatibilidad entre diferentes navegadores mediante el uso de APIs estandarizadas.
  • Aseguramiento del acceso mediante ARIA: Para mejorar la accesibilidad sin alterar la estructura semántica original.

Relaciones y Contexto

La conformidad a estándares no solo afecta la interpretación técnica del contenido sino también su integración con otros componentes del ecosistema digital. Por ejemplo:

  • Sistemas CMS (Content Management Systems): Deben generar código compatible con estándares para facilitar su integración con otros sistemas o plataformas.
  • Estrategias SEO (Optimización para Motores de Búsqueda): Requieren estructuras semánticas correctas para mejorar la indexación por parte de buscadores.
  • Tendencias emergentes: Como el uso creciente de Web Components o Progressive Web Apps (PWAs), que también deben seguir especificaciones estándar para garantizar interoperabilidad futura.

Cabe destacar que el cumplimiento a estándares también está relacionado con aspectos legales y regulatorios vinculados a derechos digitales, protección de datos y accesibilidad universal. En este sentido, muchas legislaciones exigen que los contenidos digitales sean conformes con ciertos requisitos técnicos para garantizar derechos fundamentales.

Ejemplos Aplicados

Ejemplo 1: Validación básica de un documento HTML5

Pretendamos desarrollar una página web sencilla que incluya recursos multimedia como imágenes y vídeos. Para asegurar su conformidad con HTML5, primero se escribe el código siguiendo las recomendaciones oficiales:

<!DOCTYPE html>
<html lang="es">
<head>

Página Multimedia Conformada</title>
</head>
<body>
<header>
<h1>Bienvenido a mi página multimedia</h1>
</header>

<section>
<h2>Galería de imágenes</h2>
<img src="imagen1.jpg" alt="Paisaje natural" />
<img src="imagen2.jpg" alt="Montañas" />
</section>

<section>
<h2>Video introductorio</h2>
<video controls >
<source src="video_intro.mp4" type="video/mp4" />
Tu navegador no soporta videos.
</video>
</section>

<footer>
<p>Derechos reservados ©2024</p>
</footer>

</body>
</html>
</code></pre>
<p>A continuación, se valida este código mediante herramientas como el validador del W3C (<a href="https://validator.w3.org/" target="_blank">https://validator.w3.org/</a>) para detectar errores sintácticos o incumplimientos. La validación asegura que todos los elementos utilizados cumplen con las especificaciones oficiales, lo cual favorece su correcta interpretación en cualquier navegador compatible.</p>

<h3>Ejemplo 2: Desarrollo profesional con énfasis en estándares</h3>
<p>Una empresa desarrolladora crea una plataforma educativa interactiva que integra recursos multimedia complejos: animaciones SVG interactivas, vídeos integrados mediante HTML5 y scripts JavaScript avanzados. Para garantizar compatibilidad en diferentes navegadores (Chrome, Firefox, Edge), realiza lo siguiente:</p>
<ul>
  <li>Sigue estrictamente las recomendaciones del W3C para HTML5 semántico e inclusivo.</li>
  <li>Asegura que todos los scripts JavaScript utilicen APIs estandarizadas sin dependencias propietarias específicas.</li>
  <li>Pone especial atención al uso correcto del atributo 'lang' en elementos clave para mejorar accesibilidad e internacionalización.</li>
  <li>Pasa periódicamente por validadores automáticos y realiza pruebas manuales en distintos navegadores para detectar inconsistencias o errores potenciales.</li>
</ul>
<p>Nuestro ejemplo demuestra cómo un enfoque riguroso hacia los estándares mejora significativamente la calidad técnica del producto final y facilita futuras actualizaciones o integraciones con otras plataformas educativas digitales.</p>

<h3>Ejemplo 3: Caso complejo integrando múltiples conceptos</h3>
<p>Pensemos ahora en una aplicación web multimedia avanzada destinada a museos virtuales. Incluye modelos 3D interactivos (usando WebGL), recursos multimedia enriquecidos (audio descriptivo), accesibilidad mejorada mediante ARIA, además de cumplir estrictamente con HTML5/CSS3/JavaScript según recomendaciones internacionales. Para ello:</p>
<ul>
  <li>Crea una estructura HTML semántica compatible con estándares internacionales para facilitar su indexación por motores de búsqueda (SEO).</li>
  <li>Asegura que todos los elementos interactivos sean accesibles mediante etiquetas ARIA adecuadas (<code><button aria-label="Zoom in"></code>)</li>
  <li>Pasa auditorías automáticas e inspecciones manuales usando herramientas como Lighthouse o axe-core para verificar cumplimiento técnico y accesibilidad.</li>
  <li>Mantiene documentación técnica actualizada alineada con las últimas versiones de las especificaciones W3C/WAI (Web Accessibility Initiative).</li>
</ul>
<p>This example illustrates the integration of multiple standards and best practices to develop complex multimedia applications that are robust and accessible across diverse platforms and user profiles.</p>

<h2>Análisis y Consideraciones Especiales</h2>
<p>No obstante su importancia, lograr una plena conformidad a estándares presenta desafíos significativos. Uno de ellos es la evolución constante de las especificaciones técnicas: lo que hoy es válido puede quedar obsoleto mañana debido a nuevas versiones o recomendaciones emergentes. Por ello, es recomendable adoptar un proceso continuo de validación y actualización del código fuente mediante herramientas automatizadas como validadores W3C o linters específicos para CSS/JavaScript.</p>
<p>Otro aspecto crítico es la interpretación inconsistente entre diferentes navegadores — fenómeno conocido como "comportamiento heterogéneo". Aunque los principales navegadores siguen muy bien las especificaciones actuales, todavía existen diferencias menores que pueden afectar recursos multimedia complejos o funcionalidades avanzadas. Para mitigar esto:</p>
<ul>
  <li><em>Poner énfasis en pruebas cruzadas periódicas durante todo el ciclo de desarrollo;</em></li>
  <li><em>Asegurar compatibilidad progresiva mediante técnicas como feature detection (detección avanzada) usando librerías como Modernizr;</em></li>
  <li><em>Mantenerse informado sobre cambios en las recomendaciones oficiales mediante seguimiento activo a publicaciones del W3C y otros organismos relevantes;</em></li>
</ul>
<p>A nivel profesional también se recomienda documentar claramente todas las decisiones relacionadas con el cumplimiento estándar e incorporar controles automatizados en los procesos CI/CD (Integración Continua/Despliegue Continuo). Esto garantiza que cualquier cambio futuro preserve la conformidad técnica sin comprometer otras funcionalidades ni aspectos estéticos o interactivos del producto digital.</p>

<h2>Síntesis y Conceptos Clave</h2>
<p>En resumen, la conformidad a estándares en navegadores web constituye un pilar fundamental para garantizar interoperabilidad, accesibilidad y sostenibilidad en productos multimedia digitales. La adopción rigurosa de recomendaciones internacionales—como HTML5, CSS3, ECMAScript—y su validación mediante herramientas automáticas aseguran que los contenidos funcionen correctamente en diversos entornos tecnológicos. Además, comprender las relaciones entre estos estándares facilita su integración efectiva con otras tecnologías digitales complejas. La evolución constante del ecosistema web requiere una actitud proactiva por parte del desarrollador hacia la actualización continua y buenas prácticas profesionales. En definitiva, cumplir con estos estándares no solo mejora la calidad técnica sino también promueve un entorno digital más abierto e inclusivo."</p>                </div>

                <!-- Acciones al final del apartado: marcar como visto + CTA siguiente apartado -->
                <div class="apartado-actions">
                    <div class="apartado-actions-text">
                        <strong>¿Has terminado este apartado?</strong>
                        <span id="apartado-actions-hint">Tu progreso se guarda en este navegador. <a href="/register.php">Regístrate</a> para conservarlo en tu cuenta.</span>
                    </div>
                    <div class="apartado-actions-buttons">
                        <button type="button" id="btn-completar" class="btn-mark-seen" data-action="completar-apartado"
                                aria-pressed="false" aria-keyshortcuts="m">
                            <span class="mark-icon" aria-hidden="true"></span>
                            <span class="mark-label">Marcar como visto</span>
                        </button>
                                                                            <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-3/apartado-1" class="btn-next-cta" data-direction="next" rel="next">
                                Siguiente apartado
                                <span class="next-cta-title" aria-hidden="true">· Fundamentos de programación</span>
                                <span aria-hidden="true">→</span>
                            </a>
                                            </div>
                </div>

                <!-- Navegación inferior -->
                <nav class="content-navigation" aria-label="Apartado anterior y siguiente">
                                            <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-2/apartado-4" class="nav-btn nav-prev" rel="prev" data-direction="prev" aria-keyshortcuts="ArrowLeft k">
                            <i class="fas fa-chevron-left" aria-hidden="true"></i>
                            <div>
                                <span class="nav-label">Anterior</span>
                                <span class="nav-title">Integración de aplicaciones en navegadores</span>
                            </div>
                        </a>
                    
                                            <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-3/apartado-1" class="nav-btn nav-next" rel="next" data-direction="next" aria-keyshortcuts="ArrowRight j">
                            <div>
                                <span class="nav-label">Siguiente</span>
                                <span class="nav-title">Fundamentos de programación</span>
                            </div>
                            <i class="fas fa-chevron-right" aria-hidden="true"></i>
                        </a>
                                    </nav>

                    </article>
    </main>

    <!-- Fondo oscurecido del cajón lateral (solo móvil; lo gestiona curso-viewer.js) -->
    <button type="button" id="sidebarBackdrop" class="sidebar-backdrop" hidden tabindex="-1" aria-label="Cerrar índice"></button>

    <!-- Índice del curso (cajón lateral en móvil, columna fija en escritorio) -->
    <aside id="sidebar" class="sidebar" aria-labelledby="sidebar-title">
        <div class="sidebar-header">
            <h2 id="sidebar-title">Desarrollo y Reutilización de Componentes Software y Multimedia mediante Lenguajes de Guión</h2>
            <button id="closeSidebar" type="button" class="close-sidebar" aria-label="Cerrar índice">
                <i class="fas fa-times" aria-hidden="true"></i>
            </button>
        </div>

        <!-- Barra de progreso -->
        <div class="progress-container">
            <div class="progress-info">
                <span id="progress-label">Progreso del curso</span>
                <span class="progress-percentage" aria-hidden="true">0%</span>
            </div>
            <div class="progress-bar" role="progressbar" aria-labelledby="progress-label"
                 aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"
                 aria-valuetext="0% · 0 de 32 apartados">
                <div class="progress-fill" style="width: 0%"></div>
            </div>
            <div class="progress-stats">
                0 de 32 apartados completados
            </div>
                    </div>

        <!-- Índice del curso -->
        <nav class="course-index" aria-label="Índice del curso">
                            <section class="module-item" aria-labelledby="mod-1">
                    <div class="module-header">
                        <span class="module-number">Tema 1</span>
                        <h3 class="module-title" id="mod-1">Arquitecturas de aplicaciones web</h3>
                    </div>

                    <ul class="apartados-list">
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-1/apartado-1">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">1.1</span>
                                    <span class="apartado-title">
                                        Esquema general                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-1/apartado-2">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">1.2</span>
                                    <span class="apartado-title">
                                        Arquitectura en capas                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-1/apartado-3">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">1.3</span>
                                    <span class="apartado-title">
                                        Interacción entre las capas cliente y servidor                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-1/apartado-4">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">1.4</span>
                                    <span class="apartado-title">
                                        Arquitectura de la capa cliente                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                            </ul>
                </section>
                            <section class="module-item" aria-labelledby="mod-2">
                    <div class="module-header">
                        <span class="module-number">Tema 2</span>
                        <h3 class="module-title" id="mod-2">Navegadores web</h3>
                    </div>

                    <ul class="apartados-list">
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-2/apartado-1">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">2.1</span>
                                    <span class="apartado-title">
                                        Arquitectura de un navegador                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-2/apartado-2">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">2.2</span>
                                    <span class="apartado-title">
                                        Navegadores de uso común                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-2/apartado-3">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">2.3</span>
                                    <span class="apartado-title">
                                        Seguridad en navegadores                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-2/apartado-4">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">2.4</span>
                                    <span class="apartado-title">
                                        Integración de aplicaciones en navegadores                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item  active ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-2/apartado-5" aria-current="page">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">2.5</span>
                                    <span class="apartado-title">
                                        Conformidad a estándares                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                            </ul>
                </section>
                            <section class="module-item" aria-labelledby="mod-3">
                    <div class="module-header">
                        <span class="module-number">Tema 3</span>
                        <h3 class="module-title" id="mod-3">Creación de contenido web dinámico</h3>
                    </div>

                    <ul class="apartados-list">
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-3/apartado-1">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">3.1</span>
                                    <span class="apartado-title">
                                        Fundamentos de programación                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-3/apartado-2">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">3.2</span>
                                    <span class="apartado-title">
                                        Lenguajes para el desarrollo de contenido dinámico                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                            </ul>
                </section>
                            <section class="module-item" aria-labelledby="mod-4">
                    <div class="module-header">
                        <span class="module-number">Tema 4</span>
                        <h3 class="module-title" id="mod-4">Lenguajes de guión de uso general</h3>
                    </div>

                    <ul class="apartados-list">
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-1">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.1</span>
                                    <span class="apartado-title">
                                        Integración de lenguajes de guión en navegadores web                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-2">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.2</span>
                                    <span class="apartado-title">
                                        Estructura general de un programa en un lenguaje de guión                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-3">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.3</span>
                                    <span class="apartado-title">
                                        Funciones                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-4">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.4</span>
                                    <span class="apartado-title">
                                        Manipulación de texto                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-5">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.5</span>
                                    <span class="apartado-title">
                                        Listas - arrays                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-6">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.6</span>
                                    <span class="apartado-title">
                                        Formatos estándar de almacenamiento de datos                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-7">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.7</span>
                                    <span class="apartado-title">
                                        Objetos                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-8">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.8</span>
                                    <span class="apartado-title">
                                        El modelo de documento web                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-9">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.9</span>
                                    <span class="apartado-title">
                                        Gestión de eventos                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-10">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.10</span>
                                    <span class="apartado-title">
                                        Gestión de errores                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-11">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.11</span>
                                    <span class="apartado-title">
                                        Usos específicos de lenguajes de guión                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-4/apartado-12">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">4.12</span>
                                    <span class="apartado-title">
                                        Entornos integrados                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                            </ul>
                </section>
                            <section class="module-item" aria-labelledby="mod-5">
                    <div class="module-header">
                        <span class="module-number">Tema 5</span>
                        <h3 class="module-title" id="mod-5">Contenidos multimedia</h3>
                    </div>

                    <ul class="apartados-list">
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-1">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.1</span>
                                    <span class="apartado-title">
                                        Definición de multimedia. tipos de recursos multimedia                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-2">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.2</span>
                                    <span class="apartado-title">
                                        Inclusión de contenido multimedia en páginas web                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-3">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.3</span>
                                    <span class="apartado-title">
                                        Gráficos multimedia                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-4">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.4</span>
                                    <span class="apartado-title">
                                        Audio                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-5">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.5</span>
                                    <span class="apartado-title">
                                        Vídeo                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-6">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.6</span>
                                    <span class="apartado-title">
                                        Animaciones multimedia                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item   ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-7">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.7</span>
                                    <span class="apartado-title">
                                        Elementos interactivos                                                                            </span>
                                    <span class="cg-sr-only apartado-estado"></span>
                                </a>
                            </li>
                                                                                <li class="apartado-item tipo-actividades  ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-8">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.8</span>
                                    <span class="apartado-title">
                                        Actividades prácticas del curso                                        <i class="fas fa-tasks" aria-hidden="true"></i>                                    </span>
                                    <span class="cg-sr-only apartado-estado"> (actividades)</span>
                                </a>
                            </li>
                                                                                <li class="apartado-item tipo-bibliografia  ">
                                <a href="https://mail.cursogratis.info/curso/desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion/modulo-5/apartado-9">
                                    <span class="apartado-check" aria-hidden="true">
                                                                                    <i class="far fa-circle"></i>
                                                                            </span>
                                    <span class="apartado-number">5.9</span>
                                    <span class="apartado-title">
                                        Bibliografía y referencias del curso                                        <i class="fas fa-book" aria-hidden="true"></i>                                    </span>
                                    <span class="cg-sr-only apartado-estado"> (bibliografía)</span>
                                </a>
                            </li>
                                            </ul>
                </section>
                    </nav>

        <!-- Botón de certificado (solo visible cuando está completado) -->
            </aside>

    <script>
        // Configuración global para el viewer
        window.CURSO_CONFIG = {
            slug: "desarrollo-y-reutilizacion-de-componentes-software-y-multimedia-mediante-lenguajes-de-guion",
            moduloActual: 2,
            apartadoActual: 5,
            basePath: "",
            baseUrl: "https:\/\/mail.cursogratis.info",
            // Sin sesión no se envía progreso al servidor (evita POST 401 en cada visita anónima)
            loggedIn: false        };
    </script>
    <!-- Cargar data-loader ANTES de curso-viewer.js -->
    <script src="/assets/js/data-loader.min.js?v=1789168726"></script>
    <script src="/assets/js/curso-viewer.min.js?v=1789168725"></script>
    <!-- Mejoras visor: notas + highlighting + atajos teclado -->
    <script src="/assets/js/viewer-enhancements.min.js?v=1789168730" defer></script>

<footer class="cg-ink-section mt-auto" aria-labelledby="footer-heading">
    <h2 id="footer-heading" class="cg-sr-only">Pie de página</h2>
    <div class="container mx-auto px-4 sm:px-6 lg:px-8 py-12 lg:py-16">
        <nav class="grid grid-cols-2 md:grid-cols-4 gap-8" aria-label="Enlaces del sitio">
            <div class="col-span-2 md:col-span-1">
                <a href="/" class="inline-flex items-center gap-2 mb-4 rounded-md">
                    <svg class="h-7 w-7 text-marcador" fill="none" viewBox="0 0 48 48" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
                        <path d="M24 4C25.7818 14.2173 33.7827 22.2182 44 24C33.7827 25.7818 25.7818 33.7827 24 44C22.2182 33.7827 14.2173 25.7818 4 24C14.2173 22.2182 22.2182 14.2173 24 4Z" fill="currentColor"></path>
                    </svg>
                    <span class="font-display font-bold text-xl text-white">CursoGratis<span class="text-white/70">.info</span></span>
                </a>
                <p class="text-sm text-white/75 leading-relaxed">Cursos 100% gratis. Diploma verificable con QR desde €12,99, solo si lo quieres.</p>
            </div>
            <div>
                <h3 class="font-display font-semibold text-white mb-4">Aprende</h3>
                <ul class="space-y-2.5 text-sm text-white/75">
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/categorias.php">Todas las categorías</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/buscar.php">Buscar cursos</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/carreras.php">Carreras profesionales</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/blog/">Blog</a></li>
                </ul>
            </div>
            <div>
                <h3 class="font-display font-semibold text-white mb-4">Diplomas</h3>
                <ul class="space-y-2.5 text-sm text-white/75">
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/precios.php">Precios y descuentos</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/verificar.php">Verificar un diploma</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/empresas.php">Packs para empresas</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/afiliados.php">Programa de afiliados (50 %)</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/testimonios.php">Testimonios</a></li>
                </ul>
            </div>
            <div>
                <h3 class="font-display font-semibold text-white mb-4">Soporte</h3>
                <ul class="space-y-2.5 text-sm text-white/75">
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/faq.php">Centro de ayuda</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/contacto.php">Contacto</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="mailto:hola@cursogratis.info">hola@cursogratis.info</a></li>
                    <li><a class="inline-block py-0.5 hover:text-marcador transition-colors" href="/legal/terminos-venta.php">Términos de venta</a></li>
                </ul>
            </div>
        </nav>
        <div class="border-t border-white/10 mt-10 pt-6">
            <!-- text-white/70 sobre tinta = 7.9:1 (antes /50 = 4.5:1 y /40 = 3.6:1, por debajo de AA) -->
            <nav class="flex flex-wrap justify-center items-center gap-x-4 gap-y-0 text-xs text-white/70 mb-2" aria-label="Legal">
                <a class="inline-flex items-center min-h-[44px] hover:text-marcador transition-colors" href="/legal/aviso-legal.php">Aviso legal</a>
                <span aria-hidden="true">·</span>
                <a class="inline-flex items-center min-h-[44px] hover:text-marcador transition-colors" href="/legal/privacidad.php">Privacidad</a>
                <span aria-hidden="true">·</span>
                <a class="inline-flex items-center min-h-[44px] hover:text-marcador transition-colors" href="/legal/cookies.php">Cookies</a>
                <span aria-hidden="true">·</span>
                <a class="inline-flex items-center min-h-[44px] hover:text-marcador transition-colors" href="/legal/devoluciones.php">Devoluciones</a>
                <span aria-hidden="true">·</span>
                <button type="button" class="cg-link-btn inline-flex items-center !no-underline hover:!text-marcador transition-colors" data-cg-cookie-config>Configurar cookies</button>
            </nav>
            <p class="text-center text-xs text-white/70">© 2026 CursoGratis.info. Todos los derechos reservados.</p>
        </div>
    </div>
</footer>

<!-- Cookie banner GDPR-compliant -->
<script src="/assets/js/cookie-banner.min.js?v=1789168725" defer></script>

<!-- Wishlist global (localStorage) -->
<script src="/assets/js/wishlist.min.js?v=1789168730" defer></script>

<!-- Onboarding tour para nuevos usuarios -->
<script src="/assets/js/onboarding.min.js?v=1789168728" defer></script>

<!-- Push notifications (solo activo si hay clave VAPID configurada) -->
<script src="/assets/js/push-notifications.min.js?v=1789168729" defer></script>

<!-- Service Worker registration (PWA) -->
<script>
if ('serviceWorker' in navigator) {
    window.addEventListener('load', function () {
        navigator.serviceWorker.register("\/sw.js", { scope: "\/" })
            .catch(function () { /* silencioso */ });
    });
}
</script>
</div>


<!-- Scripts globales (solo se cargan una vez) -->
<script>
// Cargar scripts solo si no han sido cargados
if (!window.scriptsLoaded) {
    window.scriptsLoaded = true;

    // Cargar data-loader.js
    if (typeof DataLoader === 'undefined') {
        const dataLoaderScript = document.createElement('script');
        dataLoaderScript.src = "\/assets\/js\/data-loader.min.js?v=1789168726";
        document.head.appendChild(dataLoaderScript);
    }

    // Cargar search.js
    if (typeof CourseSearch === 'undefined') {
        const searchScript = document.createElement('script');
        searchScript.src = "\/assets\/js\/search.min.js?v=1789168729";
        searchScript.onload = function() {
            // Inicializar búsqueda cuando se cargue
            if (typeof CourseSearch !== 'undefined') {
                window.courseSearch = new CourseSearch();
            }
        };
        document.head.appendChild(searchScript);
    }
}
</script>

</body>
</html>