【问题标题】:Disabling loading of images in JavaFX WebEngine在 JavaFX WebEngine 中禁用图像加载
【发布时间】:2014-05-28 13:46:51
【问题描述】:

我到处搜索,但找不到禁用 Java WebEngine 加载图像的方法。

研究完成:

我发现了一些想法,例如使用URL.setURLStreamHandlerFactory() 来使用我自己的URLStreamHandler,并让它分析URL 以仅返回URLConnections 用于不以.jpg .png 等结尾的URL。但是这有很多问题:有时图像 url 不以 .jpg 结尾,如果它是动态图像,例如验证码。那么如何禁用 WebEngine 自动加载图片呢?

【问题讨论】:

  • 考虑将“研究完成:”移至答案

标签: java javafx javafx-webengine


【解决方案1】:

我不是 JSoup 专家,但做这样的事情应该很容易。

import java.net.URL;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class NoImg extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        WebView wv = new WebView();
        WebEngine we = wv.getEngine();
        Document doc = Jsoup.parse(new URL("http://www.google.com"), 5000);
        doc.select("img").stream().forEach((element) -> {
            element.remove();
        });
        we.loadContent(doc.outerHtml());
        Scene scene = new Scene(wv, 300, 250);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

它似乎工作正常。你需要jsoup.jar

【讨论】:

  • 是的,但有时页面在操作 DOM 时需要大量 javascript,例如,如果我选择某个组合框,则通过页面 javascript 在 dom 中启用某个文本字段,因此使用 WebEngine.load () 是必需的,因为它在操作 dom、填写表单等时处理所有 javascript 处理,而我认为 jsoup 不会这样做,它只会将基本 html 解析为 dom,而在操作 dom 时没有未来的 js 处理。此外,有时会在不带 img 标签的情况下插入图像,例如使用样式 background-image。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2015-09-28
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多