如何在 Webviewer JavaFx 内部的网站浏览器中打开链接

How to Open Links in a browser of a website Inside a Webviewer JavaFx

我有一个包含 WebView 容器的 VBox。我想不通的是如何让 WebViewer 在新选项卡中打开链接或在任何浏览器中 window 不在程序上查看它。

@FXML private VBox WebViewer;

public void initialize(URL location, ResourceBundle resources) {
    WebView browser = new WebView();
    WebEngine webEngine = browser.getEngine();
    webEngine.load("http://google.com/");

    WebViewer.getChildren().addAll(browser);
}

我假设你现在已经弄明白了,但我的方法是在 WebEngine 中使用特殊的 JavaScript API 来调用 java 方法并以这种方式打开它。

创建一个 class,像这样:

public class eagler {
    public void open(String url) {
        java.awt.Desktop.getDesktop().browse(url);
    }
}

然后,在您的 webengine.load 方法之前添加:

    webEngine.getLoadWorker().stateProperty().addListener(
            new ChangeListener<State>() {
                @Override
                public void changed(ObservableValue<? extends State> ov,
                    State oldState, State newState) {   
                    if (newState == State.SUCCEEDED) {
                            JSObject win = (JSObject) webEngine.executeScript("window");
                            win.setMember("eagler", new eagler());
                        }
                    }
                }
        );

现在,只要您想打开外部页面...

<button onclick="eagler.open('http://bitly.com/98K8eH')">Click Me</button>