Expande automáticamente «mostrar más», spoilers y comentarios
Secciones de comentarios reducidas a tres entradas. Posts largos cortados con «leer todo». FAQ ocultas en acordeones. El contenido está en la página — solo guardado tras un botón. Esta regla pulsa todos esos botones por ti.
El patrón
Los botones de expansión tienen una de dos pistas: un texto como «mostrar más» / «leer todo», o un atributo aria-expanded="false". La regla captura ambos y pulsa.
La regla
El JavaScript de la regla:
const RE = /mostrar más|leer todo|mostrar todo|expandir|show more|read more|see more|expand|view all/i;
function expandAll() {
document.querySelectorAll('button, a, [role="button"]').forEach(el => {
if (el.dataset.jzExpanded) return;
const hit = RE.test(el.textContent || '')
|| el.getAttribute('aria-expanded') === 'false';
if (hit) {
el.dataset.jzExpanded = '1';
el.click();
}
});
}
expandAll();
new MutationObserver(expandAll)
.observe(document.body, { childList: true, subtree: true });
Cómo funciona
Una regex sobre el texto más aria-expanded
Una sola expresión regular, algunas variantes de formulación, el flag i ignora mayúsculas/minúsculas. Independientemente comprobamos aria-expanded="false" — el atributo estándar de los acordeones, que funciona incluso sin texto coincidente.
El marcador jzExpanded
Tras pulsar un elemento le ponemos data-jz-expanded. La vez siguiente la función lo salta. Sin ese marcador acabaríamos en un bucle: un clic expande la sección, la sección cambia el DOM, el MutationObserver activa la función, esta vuelve a pulsar el mismo botón.
MutationObserver
Los comentarios y las listas a menudo se cargan tras el arranque de la página. El MutationObserver observa todo el <body> y llama a expandAll cada vez que algo se añade al DOM — así también se expanden los botones que en el arranque no existían.
Trampas
- Falsos positivos. Un «mostrar más productos» que carga la tienda hasta el infinito también se pulsará. Si molesta, restringe la regex o el selector a un contenedor específico.
- Una tormenta de mutaciones. En páginas muy dinámicas
expandAllse dispara a menudo. Funciona porque el marcadorjzExpandedhace que cada pasada siguiente sea poco costosa — salta lo que ya está pulsado. - Spoilers con aviso. Expandir un spoiler o contenido sensible es una decisión tuya — la regla no distingue «mostrar más» de «mostrar contenido para adultos».
Mira también
- Ejemplos — otras reglas JS listas para usar
- Auto-pager — un patrón de automatización de la navegación afín
- Output Console — observa qué pulsa la regla
Instala JustZix — y deja de pulsar «mostrar más» sin parar.
Valora este artículo
Sin valoraciones — sé el primero.