禁用在JavaFX WebEngine中加载图像

禁用在JavaFX WebEngine中加载图像,java,javafx,javafx-webengine,Java,Javafx,Javafx Webengine,我搜索了所有地方,但没有找到任何方法禁用JavaWebEngine加载图像 已完成的研究: 我找到了一些想法,比如使用URL.setURLStreamHandlerFactory()来使用我自己的URLStreamHandler,并让它分析URL,只返回URLConnections,返回不以.jpg.png结尾的URL等。但这有很多问题:有时图像URL不以.jpg结尾,如果它是动态图像,比如验证码。那么,我怎样才能禁用从WebEngine自动加载图像呢?我不是JSoup专家,但这样做应该很容易

我搜索了所有地方,但没有找到任何方法禁用JavaWebEngine加载图像

已完成的研究:
我找到了一些想法,比如使用
URL.setURLStreamHandlerFactory()
来使用我自己的
URLStreamHandler
,并让它分析URL,只返回
URLConnection
s,返回不以.jpg.png结尾的URL等。但这有很多问题:有时图像URL不以.jpg结尾,如果它是动态图像,比如验证码。那么,我怎样才能禁用从WebEngine自动加载图像呢?

我不是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);
    }

}

它似乎工作得很好。您需要考虑将“Research done:”移动到一个答案是的,但有时页面在操作DOM时需要大量javascript,例如,如果我选择某个组合框,则通过页面javascript在DOM中启用某个文本字段,因此使用WebEngine.load()是必需的,因为它在操作dom、填写表单等时处理所有javascript处理,而我认为jsoup不会这样做,它只会将基本html解析为dom,而在操作dom时会处理未来的js处理。此外,图像有时会插入img标记,例如使用样式背景图像。