Störung bei CTRL+F Suche, bitte alternative Methode bereitstellen

Hallo zusammen, ich bin auf dasselbe nervige Problem mit STRG+F bei Discourse gestoßen – Beiträge, die gerade nicht auf dem Bildschirm sind, verschwinden bei der Suche aufgrund des Lazy-Load / Unload-from-Memory-Systems. Selbst mit 64 GB RAM kann man das ganze Thema nicht im Browser durchsuchen. Soweit ich das verstanden habe, ist dies eher eine Funktion gegen Web-Scraping als eine Funktion zur Speicherplatzersparnis. Hier sind die Alternativen, die für mich funktioniert haben (und sicherer sind):

  1. Druckansicht verwenden: Fügen Sie /print am Ende der Topic-URL hinzu, z. B. https://forum.example.com/t/topic-name/12345/print. Dies lädt alle Beiträge im Topic auf einmal und funktioniert mit der Browsersuche (STRG+F). Das Layout ist vereinfacht, aber perfekt für die Volltextsuche.

  2. Scrollen, bis alles geladen ist: Scrollen Sie weiter, bis das Lazy-Load-System alle Beiträge im DOM gerendert hat. STRG+F findet dann alles. Es kann bei langen Threads mühsam sein, funktioniert aber ohne zusätzliche Tools.

  3. Die Discourse API verwenden: Jedes Topic hat einen JSON-Endpunkt wie https://forum.example.com/t/{topic_id}.json. Sie können alle Beiträge aus dem Array post_stream.posts extrahieren, in einem Texteditor öffnen und bequem suchen. Sicher, offiziell und funktioniert unabhängig vom Lazy-Load.

  4. Userscript / Greasemonkey-Ansatz: Mit diesem einfachen Userscript für Chrome/Firefox können Sie das Laden der gesamten Seite mit Beiträgen automatisieren. Es klickt automatisch auf „Weitere Beiträge laden“, bis das Topic vollständig gerendert ist:

// ==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); // warten und erneut versuchen
        }
    }
    window.addEventListener('load', () => {
        setTimeout(loadAll, 1000); // eine Sekunde nach dem Laden der Seite starten
    });
})();

Sobald dies abgeschlossen ist, durchsucht STRG+F alles im Thread.

Export / Externe Suche: Verwenden Sie die Druckansicht oder die API-JSON, um Beiträge als PDF, HTML oder einfachen Text zu exportieren. Öffnen Sie diese in einem Editor wie VSCode oder Notepad++ zur Volltextsuche.

:warning: Versuchen Sie keine Server-Hacks: Das Eindringen in die Datenbank oder das serverseitige Scraping von Inhalten ist illegal und unnötig. Verwenden Sie API / Druckansicht / Userscript – diese sind alle sicher und funktionieren zuverlässig.

TL;DR: Am einfachsten: /print Ansicht. Flexibler: API JSON oder Userscript. STRG+F funktioniert, sobald alle Beiträge im DOM geladen sind. Ich hoffe, das Discourse-Team sieht das und zieht vielleicht eines Tages eine Option für die „Vollsuche“ in Betracht – es ist ein ernsthaftes UX-Problem für jeden, der recherchiert oder tief in ein Thema einsteigt :sweat_smile: