2016-07-14 27 views
0

Erstens, wie für den Desktop (nicht Android) -Anwendung.JavaFX, webEngine, webView. Ändern src <img> Tag (innerhalb nur geladenen Dokument) im laufenden Betrieb

Ich möchte die Quelle eines Bildes ersetzen, die in geladenen HTML-Dokument auf lokale (von meiner Festplatte) platziert wird. Ich zeige geladene Seite mit JavaFX-Komponenten: webEngine-> webView-> Szene-> Bühne. Was habe ich gemacht?

Ich lade eine Seite mit webEngine.load ("http://any_page"). Danach habe ich ein Image-Objekt (auf Java-Seite) erhalten und es an HTMLImageElementImpl übergeben. Dies ist die Darstellung eines Objekts, das auf einer geladenen Seite existiert. Ich setze das src-Attribut wie folgt:

htmlImageElementImpl.setSrc ("file:/local_path_to_my_image");

... und erwartet, dass das neue Bild auf der geladenen Seite erscheint. Leider funktioniert es nicht. Das vorherige Bild (welches ursprünglich auf der geladenen Seite war) ist verschwunden und neu erscheint nicht (es gibt einen weißen Bereich). Ich habe festgestellt, dass dieses Bild vorhanden ist (wenn ich auf die rechte Maustaste klicke, kann man die Option "Bild in neuem Fenster öffnen" auswählen und sehen). Es erscheint. Ich denke, dass es die Komponente aktualisieren muss, um es zu zeigen.

Was interessant ist, wenn ich src dieses Tags zu Bild wie in dem unten stehenden Internet exisiting ersetzen:

htmlImageElementImpl.setSrc ("http://_file_existing_in_the_internet//image.jpg");

... funktioniert alles gut und ersetzt Bild erscheint im laufenden Betrieb.

Ich habe zwei Tage verbracht und ich habe es mit diesem Problem nicht geschafft. Also habe ich beschlossen, dich zu fragen.

Mit freundlichen Grüßen

Kess

+0

Ich habe vergessen, eine wichtige Information hinzuzufügen. Wenn ich Seite von statischem html (webEngine.loadContent()) lade, funktioniert jeder gut. Nur beim Laden von einem Remote-Server gibt es ein Problem beim Ersetzen von Bild zu Datei vom lokalen Computer. Wahrscheinlich heruntergeladene Inhalte sind für eine Responses orientiert, die vom Server kommen und nicht für lokale. Irgendwelche Ideen? – Kessler

+0

hey hast du versucht, die URI zu konvertieren? http://stackoverflow.com/questions/26447451/javafx-in-webview-img-tag-is-not-loading-local-images – gumuruh

Antwort

0

antworte ich vergessen zu. Das Problem war mit Sicherheitsproblemen verbunden. Die Fähigkeit, auf das Dateisystem zuzugreifen (von der Java-Script-Schicht) wird durch die oben erwähnte Ursache eingeschränkt.

Lösung: Ich stellte Java eingebetteten lokalen HTTP-Server her und teilte diese Bilder dort. Wir müssen akzeptieren, dass der angegebene Port auf dem lokalen Rechner geöffnet werden muss, aber dies ist eine akzeptable Lösung.