JavaFX WebView Texthighlighting

Yonnig

Mitglied
Hallo zusammen,

ich versuche in einer WebView (lokale HTML Datei) Suchwörter zu highlighten - Wie STRG-F Funktion im Browser nur durch ButtonClick...
Gibt es da vlt. eine Funktion wie "WebView.getText.tuirgendwas.." oder so?
Oder wie würdet ihr das am besten umsetzen?

Gruß
Yannick
 

Yonnig

Mitglied
Ich bin gerade dran es mit Jsoup zu versuchen...
Es scheint auch soweit zu klappen, ich bekomme richtige Ausgaben... Bis auf das Replace...
Irgendwie bearbeitet er das replace nicht. Text bleibt unverändert.

Ich lese aus einem HTML-File den text aus, parse diesen mit Jsoup und schreibe den "neuen" Text in ein temp file, welches ich dann im webview laden möchte. Aber wie gesgat, das Replace funktioniert nicht.
Hat jemand ne Idee?

Java:
// Highlight text in WebView
    public void highlight() throws IOException {
        if(searchBox.getText().equals("")) {
            return;
        }
        String page = engine.getLocation();
        Path path = Paths.get("./src/eng/" + page.substring(page.lastIndexOf('/') + 1, page.length()));
        Charset charset = StandardCharsets.UTF_8;
        String content = new String(Files.readAllBytes(path), charset);
        String html = new String(content);
        File temp = new File("./src/eng/tempHTML.html");
        FileWriter writer = new FileWriter(temp);
        Document doc = Jsoup.parse(html, "UTF-8");
        Elements elements = doc.body().getAllElements();
        for(Element e : elements) {
            List<TextNode> nodes = e.textNodes();
            for(TextNode tn : nodes) {
                String text = tn.text();
                text.replace(searchBox.getText(), "<mark>" + searchBox.getText() + "</mark>");
                tn.text(text);
                System.out.println(tn.text());
            }
        }
        writer.write(doc.toString());
        engine.load(temp.toURI().toString());
        writer.close();
    }
 

Yonnig

Mitglied
Ich bin gerade dran es mit Jsoup zu versuchen...
Es scheint auch soweit zu klappen, ich bekomme richtige Ausgaben... Bis auf das Replace...
Irgendwie bearbeitet er das replace nicht. Text bleibt unverändert.

Ich lese aus einem HTML-File den text aus, parse diesen mit Jsoup und schreibe den "neuen" Text in ein temp file, welches ich dann im webview laden möchte. Aber wie gesgat, das Replace funktioniert nicht.
Hat jemand ne Idee?

Java:
// Highlight text in WebView
    public void highlight() throws IOException {
        if(searchBox.getText().equals("")) {
            return;
        }
        String page = engine.getLocation();
        Path path = Paths.get("./src/eng/" + page.substring(page.lastIndexOf('/') + 1, page.length()));
        Charset charset = StandardCharsets.UTF_8;
        String content = new String(Files.readAllBytes(path), charset);
        String html = new String(content);
        File temp = new File("./src/eng/tempHTML.html");
        FileWriter writer = new FileWriter(temp);
        Document doc = Jsoup.parse(html, "UTF-8");
        Elements elements = doc.body().getAllElements();
        for(Element e : elements) {
            List<TextNode> nodes = e.textNodes();
            for(TextNode tn : nodes) {
                String text = tn.text();
                text.replace(searchBox.getText(), "<mark>" + searchBox.getText() + "</mark>");
                tn.text(text);
                System.out.println(tn.text());
            }
        }
        writer.write(doc.toString());
        engine.load(temp.toURI().toString());
        writer.close();
    }
Never mind, glaube ich habs... Immer wenn ich poste finde ich die Lösung :D
Ich habe das replace statement direkt in tn.text() gepackt...

Ok, es gibt doch noch ein Problem... Irgendwie ersetzt er < und > mit &lt; bzw. &gt; und ich bekomme es nicht umgestellt...
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben