如何拒绝从 javafx web 访问网页

How to deny access to webpage from javafx web

我目前正在使用 javafx 开发一个信息亭项目。它使用 WebView/WebEngine。我需要允许 kiosk 管理员禁止访问某些网站,我知道如何检查它们是否匹配,但我如何挂钩 webengine 以便它在进入页面时告诉我。售货亭检查它,然后我可以将它重定向到块页面 url。我该怎么做

向 WebView 的 WebEngine 的 locationProperty() 添加一个侦听器,并在侦听器中检查新位置是否与您的黑名单匹配。

例如(在Java 8):

WebEngine engine = webview.getEngine();
engine.locationProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue.contains("badsite")) { // replace with your URL checking logic
        Platform.runLater(() -> {
            // Load your block page url
            engine.load("http://example.com"));
        }
    }
});

根据 this answer to a similar question,如果 engine.load() 调用未包装在 Platform.runLater() 中,JVM 可能会崩溃。