gpt4 book ai didi

JavaFX WebView 白页(未加载)

转载 作者:行者123 更新时间:2023-11-30 07:02:43 28 4
gpt4 key购买 nike

https://indianvisaonline.gov.in/visa/index.html上填写一些表格并上传照片后,我得到了一个白页。 。我使用 JavaFX 的 WebView 来加载网站。一切正常,直到我点击照片上传按钮。

填写表单在其他浏览器上运行得非常好,并且在 Chrome、Firefox 和 Safari 上都成功。因此我怀疑这是 JavaFX 的 WebView 特有的东西。

我尝试通过仅编写 WebView 部分来排除任何错误。但白页仍然显示。

public class SimpleTest extends Application {
    
    
public static void main(String[] args) {

launch(args);

}
 


@Override

public void start(Stage primaryStage) {

WebView webView = new WebView();
 webView.getEngine().load("https://indianvisaonline.gov.in/visa/indianVisaReg.jsp");
 


Scene scene = new Scene(webView);

Stage stage = new Stage();

stage.setScene(scene);

stage.show();

}

}

JavaFX WebEngine 的 HTML 5 支持

我注意到与其他浏览器相比缺乏 HTML5 支持。 JavaFX 的 WebView (WebEngine) 在满分 555 分中仅获得 275 分,而其他浏览器的得分要高得多。我觉得可能会破坏某些东西的是缺乏 Web 加密 API、数据库存储、文件读取或有限的 ECMAScript 6 支持。但我不知道如何测试这个?

使用 Firebug Lite 进行测试

嵌入 Firebug 时,会发生一些奇怪的事情。它不会显示空白页面,而是将我重定向到主页。所以 Firebug 在这里也帮不了我。

调试

试图在日志中找到我添加的内容:-Djavax.net.debug=all。但是,这也不会返回任何错误(如 HTTPS 相关错误)。

在这一点上,我很乐意接受任何建议!

最佳答案

在使用 JavaFX Webview 的项目中,我们发现以下内容很有用:

    webView.setContextMenuEnabled(true);
webView.getEngine().setOnError(event -> System.out.println(event.getMessage()));
webView.getEngine().setOnAlert(event -> System.out.println(event.getData()));

// local error console
com.sun.javafx.webkit.WebConsoleListener.setDefaultListener(
(webview, message, lineNumber, sourceId) -> System.out
.println("Console: [" + sourceId + ":" + lineNumber + "] " + message));

// Firebug lite
webView.getEngine().getLoadWorker().stateProperty().addListener(
(ChangeListener<State>) (ov, oldState, newState) -> {
if (newState == Worker.State.SUCCEEDED) {
webView.getEngine().executeScript(
"if (!document.getElementById('FirebugLite')){E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;E = E ? document['createElement' + 'NS'](E, 'script') : document['createElement']('script');E['setAttribute']('id', 'FirebugLite');E['setAttribute']('src', 'https://getfirebug.com/' + 'firebug-lite.js' + '#startOpened');E['setAttribute']('FirebugLite', '4');(document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);E = new Image;E['setAttribute']('src', 'https://getfirebug.com/' + '#startOpened');}");
}
});
webView.getEngine().locationProperty().addListener(
(observable, oldValue, newValue) -> System.out.println(newValue));

另外,与 Webview 行为类似的浏览器似乎是 Safari。如果某些功能在 Safari 上不起作用,那么通常在 Webview 上也不起作用。然而,Safari 有更好的开发工具。

此外,您可能会注意打开新窗口的弹出窗口和网站,这必须使用 Webview 手动处理。

关于JavaFX WebView 白页(未加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40620584/

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