🔊 Lector por Síntesis de Voz Integral
Utilidad Gerencial: Garantiza la inclusión universal y la conformidad con los estándares internacionales W A I - A A . Este script parsea dinámicamente todo el árbol DOM textual del archivo, aislando e ignorando automáticamente cadenas operativas del sistema o textos de botones interactivos para evitar la sobrecarga cognitiva del usuario invidente .
<!-- Botón de ejecución ubicado en el menú superior de accesibilidad -->
<button type="button" id="btn-escuchar-articulo" onclick="alternarLecturaIntegral()">
📢 <span id="texto-btn-lector">Escuchar Página Íntegramente</span>
</button>
const synth = window.speechSynthesis;
let leyendoPaginaCompleta = false;
let discursoPagina = null;
function alternarLecturaIntegral() {
const btnTexto = document.getElementById('texto-btn-lector');
if (leyendoPaginaCompleta) {
if (synth) synth.cancel();
leyendoPaginaCompleta = false;
if(btnTexto) btnTexto.textContent = "Escuchar Página Íntegramente";
} else {
if (synth) synth.cancel();
// Filtro gerencial de limpieza del árbol de texto
let textoCompleto = document.body.innerText
.replace(/👁️ MODO ENFOQUE/g, "")
.replace(/📢 Escuchar Página Íntegramente/g, "")
.replace(/🛑 Detener Lectura/g, "").trim();
if (textoCompleto.length === 0) return;
discursoPagina = new SpeechSynthesisUtterance(textoCompleto);
discursoPagina.lang = 'es-ES';
discursoPagina.onend = () => {
leyendoPaginaCompleta = false;
if(btnTexto) btnTexto.textContent = "Escuchar Página Íntegramente";
};
if (synth) synth.speak(discursoPagina);
leyendoPaginaCompleta = true;
if(btnTexto) btnTexto.textContent = "🛑 Detener Lectura";
}
}