完全加载WebView后执行任务 [英] Execute a task after the WebView is fully loaded

查看:401
本文介绍了完全加载WebView后执行任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

WebEngine 完成加载后,是否可以自动运行任务?我知道我可以从 WebEngine 获得 Worker 来表示加载进度,但似乎反复轮询 Worker 不是一个优雅的解决方案(即在页面加载之前锁定程序)。我知道我可以使用任务执行此操作,因此我可以获得 WebEngine的任务 以某种方式,并在完成命令上添加执行?

Is it possible to have a task automatically run after the WebEngine finishes loading? I know I can get a Worker from WebEngine to indicate loading progress, but it seems like repeatedly polling the Worker not an elegant solution (i.e. locking up program until page loads). I know I can do this with a Task, so can I get the Task for WebEngine somehow, and add an execute on complete command?

推荐答案

基于 WebView文档

webView.getEngine().getLoadWorker().stateProperty().addListener(
  new ChangeListener<Worker.State>() {
  @Override
  public void changed(
    ObservableValue<? extends Worker.State> observable,
    Worker.State oldValue, Worker.State newValue ) {

    if( newValue != Worker.State.SUCCEEDED ) {
      return;
    }

    // Your logic here
  }
} );






作为lambda表达式:


As a lambda expression:

webView.getEngine().getLoadWorker().stateProperty().addListener(
  (ObservableValue<? extends Worker.State> observable,
    Worker.State oldValue,
    Worker.State newValue) -> {
    if( newValue != Worker.State.SUCCEEDED ) {
      return;
    }

    // Your logic here
  } );

这篇关于完全加载WebView后执行任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆