Ulu*_*Biy 10 java webview javafx-2
我有一个String HTML内容,webEngine由loadContent()方法加载.我还有一些在此页面中使用的CSS和图像文件.虽然我把这些文件放在java类的同一个包中,但是加载的页面找不到它们.寻找API文档和Web,但找不到任何适合的类似解决方案.我如何加载这些文件?
jew*_*sea 10
您可以将字符串html内容放在与Java类相同的包中的文件中,并使用该engine.load(String url)方法:
engine.load(getClass().getResource("mypage.html").toExternalForm());
Run Code Online (Sandbox Code Playgroud)
执行此操作时,html页面中的所有相对链接将解析为Java包中的资源(例如css和图像文件).
请注意,如果要加载位于jar文件中的资源,则jar:协议不会理解与父指定符的相对链接.例如,<img src="../images/image.png"/>将无法工作,但是<img src="/images/image.png"/>或<img src="images/image.png"/>将持续(因为您将图像放在jar文件中的适当位置).该file:协议没有这样的限制,并且..当使用它加载资源时,相对链接将正常工作.
如果html字符串是由你的java代码而不是静态生成的,那么谢尔盖的解决方案可能是最好的.
您需要在html字符串中设置本地路径以获得loadContent下一个方法:
view.getEngine().loadContent(
"<img src='" + getClass().getResource("1.jpg") + "' />");
Run Code Online (Sandbox Code Playgroud)
我刚刚发现<base>在 HTML中使用标签也能解决问题:
<html>
<head>
<title>The slash at the end of the href is important!</title>
<base href="file:///absolute/path/to/your/docroot/" />
</head>
<body>
<img src="image.png"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果您通过加载上面的代码,engine.loadContent(String)那么image.png将从/absolute/path/to/your/docroot/image.png.
如果您需要加载多个资源,则此方法更容易,因为您只需在一个位置指定绝对路径。
这已经用WebViewJava 8u25测试过。
| 归档时间: |
|
| 查看次数: |
6594 次 |
| 最近记录: |