2016-07-14 59 views
0

首先针对桌面(而不是Android)应用程序。JavaFX,webEngine,webView。在运行中更改<img>标记(在刚加载的文档中)的src

我想将放置在加载的HTML文档中的图像的来源替换为本地(从我的硬盘驱动器)。 我使用JavaFX组件显示加载的页面:webEngine-> webView-> Scene-> Stage。 我做了什么?

我使用webEngine.load(“http://any_page”)加载了一个页面。之后,我获得了一个图像对象(在Java端)并将其转换为HTMLImageElementImpl。这是加载页面上存在的对象的表示。我设置如下的src属性:

htmlImageElementImpl.setSrc(“file:/ local_path_to_my_image”);

...并预计新图像将出现在加载页面上。 不幸的是它不起作用。以前的图像(最初在加载的页面上)已消失,并且未出现新图像(有白色区域)。 我确定这个图像在那里(当我点击右键时,可以选择“在新窗口中打开图像”选项并查看它)。它出现。我认为它需要刷新组件才能显示它。

当我更换这个标签的SRC在互联网图像exisiting像下面有趣的是:

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

...每一个工作正常和更换的图像出现在飞行中。

我已经花了两天时间,但我没有解决这个问题。所以我决定问你。

问候

KESS

+0

我忘了添加一个重要信息。当我从静态html(webEngine.loadContent())加载页面时,每个人都可以正常工作。仅在从远程服务器加载期间,将本地计算机上的映像文件替换为文件时出现问题。可能下载的内容面向的是来自服务器而不是本地服务器的resporces。有任何想法吗? – Kessler

+0

嘿你有尝试使用转换的URI? http://stackoverflow.com/questions/26447451/javafx-in-webview-img-tag-is-not-loading-local-images – gumuruh

回答

0

我忘了回答。 麻烦与安全问题有关。能够访问文件系统(来自Java脚本层)受上述原因限制。

解决方案:我建立了Java嵌入式本地HTTP服务器并在那里共享这些图像。我们必须接受这样的事实,即必须打开本地计算机上的指定端口,但这是可接受的解决方案。