我有一个Webview(JavaFX 8),可以加载来自维基百科的文章。
我放了一个刷新按钮以允许刷新,基本上,它使用相同的URL再次调用WebView的webEngine的load方法。但大约有50%的时间从未呈现过该文章。在这种情况下,我可以右键单击Web视图以手动刷新,然后它将成功呈现。
我试着查看LoadWorker状态,它总是说" SUCCEED" ...
下面是一个简短的可运行的测试类,它证明了我的观点。
public class Test1 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final WebView webView = new WebView();
webView.getEngine()
.load("http://fr.wikipedia.org/wiki/Sp%C3%A9cial:Page_au_hasard");
Tab tab = new Tab("webView", webView);
TabPane tabPane = new TabPane(tab);
BorderPane borderPane = new BorderPane(tabPane);
Button buttonRefresh = new Button("Refresh");
buttonRefresh.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
webView.getEngine()
.load("http://fr.wikipedia.org/wiki/Sp%C3%A9cial:Page_au_hasard");
}
});
borderPane.setBottom(buttonRefresh);
Scene scene = new Scene(borderPane);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main (String[] args) {
launch(args);
}
}
我做错了吗?有谁知道这个问题可能来自哪里?
修改
我添加了几行来绕过这个问题,当loadWorker的状态变为SUCCESS时,我检查DOM中的头。如果它是空的,我会重新加载。现在它(看起来)100%正常,但我仍然很好奇它为什么不能一直工作。
一些可能有用的想法
webView.getEngine.reload()
)。