我有一个WebView
,它加载了我在项目中保存的本地html文件。我使用以下内容加载文件:
InputStream is = Browser.class.getResourceAsStream(location);
String str = "";
int i;
while((i = is.read()) != -1){
str += (char)i;
}
str = str.replace("{placeholder_1}", value1);
str = str.replace("{placeholder_2}", value2);
webEngine.loadContent(str);
在HTML中我有一个指向css文件的链接。 HTML文件和css文件位于同一目录中,但在WebView
中加载页面时,不会加载css文件。以下是我从HTML中调用css文件的方法:
<link rel="stylesheet" href="main.css" />
为什么文件没有加载?据其他人说,这就是他们这样做的方式,并且它正在发挥作用。为什么它对我不起作用,我做错了什么?
这是目录布局:
答案 0 :(得分:3)
将css文件放在与html文件相同的目录中,如果
,则可以使用webView.getEngine().load(location);
被使用。但是它不适用于loadContent()
。您需要将css文件位置明确定义为:
(伪代码)
str = str.replace("href='main.css'",
"href='" + getClass().getResource("main.css") + "'");
答案 1 :(得分:1)
以下内容对我有用
项目结构
Application
|
src
|
package
|
WebViewLoadLocalFile.java
test.html
test.css
<强> WebViewLoadLocalFile 强>
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebViewLoadLocalFile extends Application {
@Override
public void start(Stage stage) throws Exception {
BorderPane borderPane = new BorderPane();
WebView webView = new WebView();
String url = getClass().getResource("test.html").toExternalForm();
webView.getEngine().load(url);
borderPane.setCenter(webView);
final Scene scene = new Scene(borderPane);
stage.setScene(scene);
stage.setHeight(300);
stage.setWidth(250);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
<强>的test.html 强>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Insert title here</title>
<link rel="stylesheet" href="test.css" />
</head>
<body>
Test HTML
</body>
</html>
<强> test.css 强>
body
{
background-color:#d0e4fe;
}