JavaFX WebView进度始终从0.0到1.0。(无中间值)

 2023-02-16    329  

问题描述

我目前正在使用GluonHQ(Javafxports)开发一个应用程序,在该应用程序中,我正在使用WebView来加载一些Internet页面.我注意到,当我在桌面上使用以下代码

JavaFX WebView进度始终从0.0到1.0。(无中间值)

webEngine.getLoadWorker().progressProperty().addListener((a,b,progress) -> System.out.println(": " +progress.doubleValue()));

它将加载从0.0打印到1.0.

Loading Page: 0.0
Loading Page: 0.22
Loading Page: 0.38
Loading Page: 0.81
Loading Page: 1.0

在iOS上,它总是返回0.0和1.0,而不是任何中间值.

Loading Page: 0.0
Loading Page: 1.0

有什么方法来处理此操作?

推荐答案

使用Javafxports,在移动设备(Android和iOS)上,WebView控件不是Javafx内置控件,而是本机控制.例如,在iOS上,使用UIWebView控制.顺便说一句,同样适用于TextField和TextArea控制.

保持与桌面中的API,javafx” webview” control ,但它只是一个立面,一个具有相同属性的节点,但没有webkit.一切都传递到本地控制.

,虽然本地和Java层之间都有两种方式,而不是发送 everything ,因此本机控制属性与Javafx属性之间没有1:1的关系桌面实现.

If you check the 本机实现在iOS的Objective-C中,您可以找到与加载状态有关的一些方法,而本机回调:

- (void)webViewDidStartLoad:(UIWebView *)webView {
    ...
    (*env)->CallVoidMethod(env, jObject, jmidLoadStarted);
}
- (void)webViewDidFinishLoad:(UIWebView *)wv {
    ...
    (*env)->CallVoidMethod(env, jObject, jmidLoadFinished, jUrl, jInner);
}

that go to the JavaFX https://bitbucket.org/javafxports/8u-dev-rt/src/7bb974e4073cae570e6106deb4afff9b56d96dd5/modules/web/src/ios/java/javafx/scene/web/WebView .

// native callbacks
private void notifyLoadStarted() {
    engine.notifyLoadStarted();
}

private void notifyLoadFinished(String loc, String content) {
    engine.notifyLoadFinished(loc, content);
}

您可以看到,没有与加载进度有关的方法,因此这就是您不会获得任何中间值的原因.

以上所述是小编给大家介绍的JavaFX WebView进度始终从0.0到1.0。(无中间值),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33844.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。