gpt4 book ai didi

java - 将CSS应用于javafx中webview内的内容

转载 作者:行者123 更新时间:2023-11-28 15:18:03 24 4
gpt4 key购买 nike

我正在使用 JavaFx 创建示例应用程序。我已经在应用程序的 webview 中加载了一个本地 html 文件。我想将样式应用于从应用程序加载的 html 页面。当我尝试这样做时,样式将应用于整个 webview。我只想在加载的 html 页面而不是 webview 上应用。

这是我正在加载的 index.html 页面。

<!DOCTYPE html>
<html>
<head>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = "Paragraph changed.";
}
</script>
</head>

<body>

<h1>My Web Page</h1>

<p id="demo">A Paragraph</p>

<button type="button" onclick="myFunction()" id="btn">Try it</button>

</body>
</html>

这是demo.css

*{
padding: 0;
margin: 0;
}

#btn{
font-weight: bold;
font-size: 14px;
padding: 10px 20px;
}

body {
background-color: #00ff80;
font-family: Arial, Helvetica, san-serif;
}

这是我的 javafx 应用程序代码。

 Hyperlink hpl3 = new Hyperlink("Load Html File");
hpl3.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
String path = System.getProperty("user.dir");
path.replace("\\\\", "/");
path += "/html/index.html";
String path1 = System.getProperty("user.dir");
path1.replace("\\\\", "/");
path1 += "/css/demo.css";
webEngine.setUserStyleSheetLocation("file:///" + path1);
webEngine.load("file:///" + path);
}
});

最佳答案

作为james-d说:

import javafx.application.Application;
import javafx.concurrent.Worker.State;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;


public class WebViewCssPlay extends Application {

private static final String CSS =
"body {"
+ " background-color: #00ff80; "
+ " font-family: Arial, Helvetica, san-serif;"
+ "}";

@Override
public void start(Stage stage) {
stage.setTitle("CSS Styling Test");
stage.setWidth(300);
stage.setHeight(200);

WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();

webEngine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> {
if (newState == State.SUCCEEDED) {
Document doc = webEngine.getDocument() ;
Element styleNode = doc.createElement("style");
Text styleContent = doc.createTextNode(CSS);
styleNode.appendChild(styleContent);
doc.getDocumentElement().getElementsByTagName("head").item(0).appendChild(styleNode);

System.out.println(webEngine.executeScript("document.documentElement.innerHTML"));
}
});
webEngine.loadContent("<html><body><h1>Hello!</h1>This is a <b>test</b></body></html>");

VBox root = new VBox();
root.getChildren().addAll(browser);
root.getStyleClass().add("browser");
Scene scene = new Scene(root);
stage.setScene(scene);
//scene.getStylesheets().add("/net/snortum/play/web_view.css");
stage.show();
}

public static void main(String[] args) {
launch(args);
}
}

来源:

Applying CSS file to JavaFX WebView

关于java - 将CSS应用于javafx中webview内的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40122817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com