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?
Ich habe einen "Haufen" HTML-Files vorgegeben, mit denen ich arbeiten muss.
Mein Programm sieht so aus (HTML auf google geändert wegen Datenschutz...).
Bei klick auf search soll es eben die liste links filtern und dann im html rechts das jeweilige Wort highlighten.
I used the SimpleSwingBrowser example (http://docs.oracle.com/javafx/2/swing/SimpleSwingBrowser.java.htm) and added some code of my own for log tailing. I wanted to add a search bar ability to it (
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 WebViewpublicvoidhighlight()throwsIOException{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 =newString(Files.readAllBytes(path), charset);String html =newString(content);File temp =newFile("./src/eng/tempHTML.html");FileWriter writer =newFileWriter(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();}
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 WebViewpublicvoidhighlight()throwsIOException{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 =newString(Files.readAllBytes(path), charset);String html =newString(content);File temp =newFile("./src/eng/tempHTML.html");FileWriter writer =newFileWriter(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();}
Ich habe einen "Haufen" HTML-Files vorgegeben, mit denen ich arbeiten muss.
Mein Programm sieht so aus (HTML auf google geändert wegen Datenschutz...).
Bei klick auf search soll es eben die liste links filtern und dann im html rechts das jeweilige Wort highlighten.