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):
-
Druckansicht verwenden: Fügen Sie
/printam 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. -
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.
-
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 Arraypost_stream.postsextrahieren, in einem Texteditor öffnen und bequem suchen. Sicher, offiziell und funktioniert unabhängig vom Lazy-Load. -
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.
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 ![]()