Skip to content

Instantly share code, notes, and snippets.

@Carolain
Created June 16, 2020 14:34
Show Gist options
  • Save Carolain/8101a33db6ebe9ead02ff44aa4a934cf to your computer and use it in GitHub Desktop.
Save Carolain/8101a33db6ebe9ead02ff44aa4a934cf to your computer and use it in GitHub Desktop.
Bookmarklet para sitios con botón de "mostrar más resultados"
Esto sirve para dejar cargando automáticamente todos los resultados de un feed con botón para cargar más resultados (común en tiendas online como https://mipegatina.empretienda.com.ar/).
TL;DR: guardá el código entre `***`s como bookmarklet. Clickealo en la página, y luego clickeá el botón que carga más resultados. Que no sean infinitos, porque no corta hasta que llega al final.
Se usa como bookmarklet (un "favorito" o "bookmark" en tu navegador).
Para usarlo, copiá el código que está entre los separadores `****`, y pegalo como si fuera el link de un favorito.
Por ejemplo: click derecho en tu barra de favoritos, 'Agregar página' o 'Nuevo marcador'. Te va a pedir nombre (el que quieras), y URL o dirección: ahí pegás el código. Si no quedó claro, podés googlear "bookmarklet" por una mejor explicación.
Una vez que estás en la página que querés cargar completa, hacés click en este favorito, luego hacé click en el botón de cargar más resulados, y dale unos segundos o minutos para hacer lo suyo. Corta solo, y podés navegar todos los resultados juntos en paz, mirar en orden desde el contenido más viejo, o lo que sea que necesitabas.
ATENTI: No frena hasta que no llega a la última página de resultados, así que NO LO USES EN FEEDS INFINITOS que te puede colgar la compu. Es como para un catálogo de alguna tienda online, un portfolio, cosas con varias páginas de resultados, pero que terminan.
***
javascript: console.log('clickeá en el botón de cargar más contenido');
body = document.getElementsByTagName('body')[0];
handler = (event) => {
coso = setInterval(() => {
if (body.contains(event.target)) {
target = event.target;
} else {
target = [].slice.call(document.getElementsByClassName(event.target.className)).filter(node => node.textContent === event.target.textContent && node.classList.toString() === event.target.classList.toString())[0];
}
if (target && target.offsetParent) {
target.click();
} else {
console.log('no encontró el botón');
clearInterval(coso);
}
}, 2000);
body.removeEventListener("click", handler);
};
body.addEventListener("click", handler);
***
Posibles mini fallas
====================
Puede no andar, y en ese caso no hace nada malo, sólo falla en cargar las páginas automáticamente. Si recargás la página, el bookmarklet pierde efecto. Si lo usaste en un feed infinito y no corta nunca, o pasa cualquier cosa que no te guste, recargás la página, y listo.
Si el sitio tarda mucho en cargar cada tanda de resultados, puede ser que corte antes de terminar. Podés volver a usarlo como al principio y retoma su trabajo.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment