Interrupción en la búsqueda CTRL+F, por favor proporcione un método alternativo

Hola a todos, me encontré con el mismo problema molesto con CTRL+F en Discourse: las publicaciones que no están actualmente en pantalla desaparecen de la búsqueda debido al sistema de carga diferida/descarga de la memoria. Incluso con 64 GB de RAM, no se puede buscar todo el tema en el navegador. Por lo que entiendo, esto es más una característica anti-scraping que un ahorro de memoria. Aquí están las alternativas más seguras que he encontrado y que funcionan:

  1. Usar la Vista de Impresión: Agregue /print al final de la URL del tema, por ejemplo, https://forum.example.com/t/topic-name/12345/print. Esto carga todas las publicaciones del tema a la vez y funciona con la búsqueda del navegador (CTRL+F). El diseño es simplificado, pero perfecto para la búsqueda de texto completo.

  2. Desplazarse hasta que todo se cargue: Siga desplazándose hasta que el sistema de carga diferida haya renderizado todas las publicaciones en el DOM. CTRL+F encontrará todo. Puede ser tedioso para hilos largos, pero funciona sin herramientas adicionales.

  3. Usar la API de Discourse: Cada tema tiene un endpoint JSON como https://forum.example.com/t/{topic_id}.json. Puede extraer todas las publicaciones de la matriz post_stream.posts, abrirlas en un editor de texto y buscar cómodamente. Es seguro, oficial y funciona independientemente de la carga diferida.

  4. Enfoque de Userscript / Greasemonkey: Puede automatizar la carga de la página completa de publicaciones con este simple userscript para Chrome/Firefox. Hace clic automáticamente en “cargar más publicaciones” hasta que el tema se renderiza completamente:

// ==UserScript==
// @name         Discourse Load All Posts
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Auto-click "load more posts" to fully render topic for search
// @match        https://*/*
// @grant        none
// ==/UserScript==
(function() {
    'use strict';
    function loadAll() {
        const button = document.querySelector('.load-more[data-more-url]');
        if (button) {
            button.click();
            setTimeout(loadAll, 500); // esperar y volver a intentarlo
        }
    }
    window.addEventListener('load', () => {
        setTimeout(loadAll, 1000); // comenzar un segundo después de la carga de la página
    });
})();

Una vez que haya terminado, CTRL+F buscará todo en el hilo.

Exportación / Búsqueda Externa: Use la vista de impresión o el JSON de la API para exportar las publicaciones a PDF, HTML o texto sin formato. Ábralo en un editor como VSCode o Notepad++ para la búsqueda de texto completo.

:warning: No intente trucos del servidor: Penetrar la base de datos o raspar contenido del lado del servidor es ilegal e innecesario. Use la API / vista de impresión / userscript: todos son seguros y funcionan de manera confiable.

TL;DR: Lo más fácil: vista /print. Más flexible: JSON de la API o userscript. CTRL+F funciona una vez que todas las publicaciones se cargan en el DOM. Espero que el equipo de Discourse vea esto y tal vez considere una opción de “búsqueda completa” algún día: es un problema serio de experiencia de usuario para cualquiera que investigue o lea temas en profundidad :sweat_smile: