【问题标题】:How do you cancel a webview loading a web site?如何取消加载网站的 webview?
【发布时间】:2018-03-09 07:32:01
【问题描述】:

我要实现的本质上是浏览器的取消按钮,但使用的是 JavaFX 的 webview。这是我到目前为止的代码:

Worker<Void> loadWorker = webView.getEngine().getLoadWorker();
if (loadWorker != null) {
    Platform.runLater(() -> loadWorker.cancel());
}

但它有时有效,有时无效。

取消加载页面的webview/webengine任务的正确方法是什么?

【问题讨论】:

    标签: java javafx webview javafx-webengine


    【解决方案1】:

    取消webEngine任务后,可以尝试将webEngine的内容设置为null

    webView.getEngine().load(null);
    

    【讨论】:

      【解决方案2】:

      WebEngine 中的表格说明了 JavaScript 用户界面方法和属性及其对应的 WebEngine 回调。

      其中window.close() 对应于WebEngineonVisibilityChanged 回调。


      在这种情况下,一种快速尝试的方法可能是:

      webEngine.getOnVisibilityChanged().handle(closeWindowEvent); //event definition below
      

      后跟一个

      webEngine.executeScript("window.close()");
      

      另一种确保窗口关闭的方法是定义一个可由当前节点的 WebView's EventDispatcher 调度的事件。

      // Here the event to be dispatched for closing the window shall be 
      WebEvent<Boolean> closeWindowEvent = new WebEvent<>(webEngine, VISIBILITY_CHANGED, Boolean.FALSE);
      
      webView.getEventDispatcher().dispatchEvent(closeWindowEvent, null); // no further events
      

      如果只想取消加载网页,可以使用executeScript来做:

      webEngine.executeScript("window.stop()");
      

      【讨论】:

      • 我不是要关闭一个窗口,只是取消一个网页的加载。
      • @Pablo window.stop() 在这种情况下会帮助你...?
      【解决方案3】:
      webView.getEngine().getLoadWorker().cancel()
      

      是你的孩子

      【讨论】:

        猜你喜欢
        • 2016-02-01
        • 1970-01-01
        • 2017-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多