【问题标题】:How to stop WebEngine after loading for too long?加载太久后如何停止WebEngine?
【发布时间】:2014-05-18 21:14:14
【问题描述】:

我目前正在创建一个自动机器人来进入某个网站并执行重复性任务。我正在使用 JavaFX 和 WebEngine 来执行此操作。问题是,这个网页有时需要很长时间才能加载,而我不一定需要它来完全加载。

我正在使用 WebEngine 的侦听器,以便在加载完成后它会继续执行其任务,但就像我说的那样,有时需要几分钟才能加载,这是一个问题。

所以我的问题是,有没有什么方法可以在一段时间后停止加载,以便监听器告诉我的程序加载完成?这是我的听众:

webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
    @Override
    public void changed(ObservableValue<? extends Worker.State> observableValue, 
            Worker.State oldState, Worker.State newState) {

        if (newState == Worker.State.SUCCEEDED) {
            loaded = true;
            System.out.println("true");
            start();
        }
    }
});

【问题讨论】:

    标签: java web javafx javafx-webengine


    【解决方案1】:

    您可以设置计时器,即在 1 分钟后停止加载页面

    Timer timer = new Timer();
    
    timer.schedule(new TimerTask() {
      @Override
      public void run() {
        // Stop loading page
      }
    }, 60*1000);
    

    【讨论】:

    • 这很棘手,因为我使用的是监听器。唯一可行的方法是,如果我可以在一定时间后手动将 webengines worker 状态设置为 SUCCEEDED,我环顾四周,不确定您是否可以手动设置 worker 状态。
    猜你喜欢
    • 2014-04-21
    • 1970-01-01
    • 2012-01-24
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2017-05-14
    相关资源
    最近更新 更多