Ciao a tutti, ho riscontrato lo stesso fastidioso problema con CTRL+F su Discourse: i post che non sono attualmente visibili scompaiono dalla ricerca a causa del sistema di lazy-load/scaricamento dalla memoria. Anche con 64 GB di RAM, non è possibile cercare l’intero argomento nel browser. Da quanto ho capito, questa è più una funzione anti-scraping che un risparmio di memoria. Ecco cosa ha funzionato (e le alternative più sicure) che ho trovato:
-
Usa la Vista Stampa: Aggiungi
/printalla fine dell’URL dell’argomento, ad esempiohttps://forum.example.com/t/topic-name/12345/print. Questo carica tutti i post dell’argomento contemporaneamente e funziona con la ricerca del browser (CTRL+F). Il layout è semplificato, ma perfetto per la ricerca full-text. -
Scorri Finché Tutto Viene Caricato: Continua a scorrere finché il sistema di lazy-load non ha renderizzato tutti i post nel DOM. CTRL+F troverà quindi tutto. Può essere noioso per i thread lunghi, ma funziona senza strumenti aggiuntivi.
-
Usa l’API di Discourse: Ogni argomento ha un endpoint JSON come
https://forum.example.com/t/{topic_id}.json. Puoi estrarre tutti i post dall’arraypost_stream.posts, aprirli in un editor di testo e cercare comodamente. Sicuro, ufficiale e funziona indipendentemente dal lazy-load. -
Approccio Userscript / Greasemonkey: Puoi automatizzare il caricamento completo dei post della pagina con questo semplice userscript per Chrome/Firefox. Clicca automaticamente su “carica altri post” finché l’argomento non è completamente renderizzato:
// ==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); // aspetta e riprova
}
}
window.addEventListener('load', () => {
setTimeout(loadAll, 1000); // inizia un secondo dopo il caricamento della pagina
});
})();
Una volta terminato, CTRL+F cercherà tutto nel thread.
Esportazione / Ricerca Esterna: Usa la vista di stampa o l’API JSON per esportare i post in PDF, HTML o testo semplice. Apri in un editor come VSCode o Notepad++ per la ricerca full-text.
Non tentare hack del server: Penetrare il database o fare scraping di contenuti lato server è illegale e non necessario. Usa l’API / vista di stampa / userscript: sono tutti sicuri e funzionano in modo affidabile.
TL;DR: Il più facile: vista /print. Più flessibile: API JSON o userscript. CTRL+F funziona una volta che tutti i post sono caricati nel DOM. Spero che il team di Discourse veda questo e magari consideri un’opzione di “ricerca completa” un giorno: è un serio problema di UX per chiunque faccia ricerca o legga a fondo gli argomenti ![]()