在我的 JavaFX 项目中,我在等待网站完全呈现的 WebView 的 WebEngine 上有一个侦听器。然后我需要访问生成的 DOM 文档。如果我不知道侦听器属于哪个 WebEngine,这将不起作用!创建变量或简单地使用webView存在的变量不是一种选择!这是因为我正在使用 ChangeListeners 创建几个 webViews。我现在如何将它们分配给彼此?webView.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() { public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) { if (newState == Worker.State.SUCCEEDED) { // Here I do my stuff // I need to access webView.getEngine().getDocument() } }});更新这是我面临的问题的最小工作示例:https : //github.com/mg98/StackOverflow-Demonstration它基本上是关于: Main.javapackage sample;import javafx.application.Application;import javafx.beans.value.ChangeListener;import javafx.beans.value.ObservableValue;import javafx.concurrent.Worker;import javafx.fxml.FXMLLoader;import javafx.scene.Parent;import javafx.scene.Scene;import javafx.scene.web.WebView;import javafx.stage.Stage;import org.w3c.dom.Document;public class Main extends Application { private static Controller ctrl; private final static String[] urls = new String[] { "https://google.com", "https://youtube.com", "https://facebook.com", "https://twitter.com", "https://stackoverflow.com" }; @Override public void start(Stage primaryStage) throws Exception{ FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("sample.fxml")); Parent root = fxmlLoader.load(); ctrl = fxmlLoader.getController(); primaryStage.setTitle("Hello World"); primaryStage.setScene(new Scene(root, 300, 275)); primaryStage.show(); findSomething(); } public static void main(String[] args) { launch(args); }
添加回答
举报
0/150
提交
取消