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

Hallo,

Ich war in dem folgenden Discourse-Forum unterwegs:

Und ich musste das Wort „mac“ finden.

Mit STRG+F konnte dieser String nur gefunden werden, wenn er auf dem Bildschirm sichtbar war. Das Scrollen selbst ließ die Treffer verschwinden.

Es stört auch die Anzeige des Scrollposition-Matches in der Scrollleiste.

Ich verstehe die Behauptung, dies diene dazu, „Speicher zu sparen“, aber dieses System hat 64 Gigabyte Speicher und diese Seite besteht aus weniger als 100 Kilobyte Text. Daher verstehe ich, dass dies tatsächlich eine Anti-Scraping-Funktion ist, wie sie Facebook nutzt, um das Scraping zu verhindern (aber scheitert).

Bei der Suche nach diesem seltsamen Fehler fand ich eine absolute Flut von Beschwerden über diese äußerst störende Anti-Funktion.

Was sind die Alternativen?

Kann es clientseitig deaktiviert werden?

Was ist mit dem Laden der Seite im Druckmodus?

Gibt es eine Möglichkeit, einen vollständigen Text-Dump der gesamten Seite zu erzwingen, damit ich ihn einfach in einem Texteditor anzeigen kann?

Was ist mit einem Greasemonkey-Skript, irgendetwas, das die Funktion, die den Text aus dem Speicher entlädt, damit er durchsucht werden kann, außer Kraft setzen kann?

Ist meine einzige Option, in den Datenbankserver einzudringen, alle Discourse-Inhalte zu exfiltrieren und dann Code zu schreiben, um den Kommentar-Thread ohne diese Störungen anzuzeigen?

Ich sehe Beschwerden darüber aus dem Jahr 2014, daher gehe ich davon aus, dass kein Interesse daran besteht, dieses Problem zu lösen, und es sich um ein „Feature, kein Bug“ handelt, aber ein Feature für die Besitzer und nicht für den Benutzer?

Was ist die „Meta“ zu diesem sehr ernsten Problem, das mich davor zurückschrecken lässt, jemals das Pech zu haben, ein „Discourse“-Forum navigieren zu müssen?

Ja, ich bin verbittert, woher wissen Sie das?

Ich habe die Druckmaschine gebeten, mir eine Druckversion zu geben

Und nach etwa 1 Minute Verarbeitung der Vorschau funktioniert es TATSÄCHLICH

Fügen Sie /print hinzu, um bis zu 100 Beiträge auf einmal zu laden. Sehen Sie es hier in Aktion: https://forum.openwrt.org/t/re-luci-add-support-for-managing-tags-in-dhcp-and-dns-configuration-web-page/220640/print

Ja, siehe https://forum.openwrt.org/raw/220640

Danke!

Die raw-Methode erledigt das für mich.

Gibt es zufällig ein Add-on, um jede Seite automatisch im Rohformat zu laden?

Ich habe gerade eine andere Nachricht geschrieben, tut mir leid, ich kann nicht den ganzen Tag warten, bis das Timeout für ein Bild nach dem anderen kommt.

Ja, ich habe es versucht, aber

ich möchte keine serverseitige Suche verwenden

und auch die Ergebnisse sind für mich nicht auf eine brauchbare Weise

Hier ist, wie das aussieht

Es tut mir leid,

Ich habe versucht, ein Problem in OpenWrt zu lösen

Und ich wurde wirklich frustriert, weil ich nicht so suchen konnte, wie ich es von einem Browser erwarten würde.

Es tut mir leid, dass Sie das Gefühl haben, ich sei unhöflich, weil ich mir keine Zeit nehme, aber bitte verstehen Sie meine Perspektive.

Ich habe Schwierigkeiten bei der Verwendung der Software, und zwar in einem Maße, dass ich anfange, nach Lösungen zu suchen, um das Problem zu überwinden.

Und wenn ich die Lösung nicht finden kann, suche ich nach dem Namen der Software, finde den Diskussionsbereich, erstelle ein Konto, löse das Captcha, führe die E-Mail-Verifizierung durch, suche im Forum nach ähnlichen Fragen, finde einige, sie sind geschlossen, finde andere, entscheide mich, einen neuen Beitrag zu erstellen, fange an zu schreiben, schreibe meinen gesamten Kommentar, mit vielen Bildbeispielen

und dann klicke ich auf Antworten und erhalte eine Fehlermeldung, dass ich nur ein Bild nach dem anderen hochladen kann

Was erfordern würde, dass ich meine gesamte Nachricht bearbeite, die von diesen Screenshots für die Kohärenz abhängt.

Also versuche ich, meine Nachricht in 1 Bild pro Beitrag aufzuteilen, aber dann gibt es eine unbekannte Wartezeit zwischen den Nachrichten, und ich möchte einfach nur wieder an die Arbeit gehen, und ich fange an zu denken, diese Leute wissen sicher von dem Kampf, also füge ich nichts hinzu, indem ich ihnen sage, wie sehr mich das stört

aber nein, als Power-User habe ich die Pflicht, die Entwickler über die Schwierigkeiten anderer Benutzer zu informieren, und jetzt kämpfe ich schon eine halbe Stunde damit, über den Kampf zu berichten.

Also… es tut mir leid, wenn das unhöflich ist, aber ich möchte keine weitere unbekannte Anzahl von zusätzlichen Minuten damit verbringen, herauszufinden und auszuführen, welche Aktionen erforderlich sind, um meine Nachricht zu posten.

Aber ich versichere Ihnen, ich meine es nicht unhöflich Ihnen gegenüber, ich bin nur sehr frustriert!

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:

Funktioniert dieses Greasemonkey-Skript?

Haben Sie es erstellt?

Nur zur Klarstellung bezüglich des Userscripts, das ich geteilt habe: Ich habe es speziell für das Forum geschrieben, das ich verwendet habe. Es kann also zu Unterschieden in der HTML-Struktur kommen, wenn Sie versuchen, es an andere Websites anzupassen. Das Skript funktioniert bei Standard-Discourse-Themen, die das „Mehr Beiträge laden“ (Lazy-Load)-System verwenden, indem es wiederholt automatisch auf die Schaltfläche „Mehr Beiträge laden“ klickt, bis alle Beiträge in das DOM geladen sind. Sobald alle Beiträge geladen sind, können Sie die Tastenkombination STRG+F Ihres Browsers verwenden, um wie gewohnt nach Schlüsselwörtern zu suchen.

Tatsächlich verwenden viele Leute Tampermonkey/Greasemonkey seit Jahren, um Discourse auf diese Weise zu handhaben, und es funktioniert auch bei sehr großen Foren gut.

:warning: Hinweis: Einige Foren ändern möglicherweise die Klasse der Schaltfläche (z. B. \.load-more\[data-more-url\]), daher müssen Sie den Selektor möglicherweise leicht anpassen, um der tatsächlichen Schaltfläche zu entsprechen.