JavaFX中的Webview无法打开弹出窗口

3
我正在尝试使用javafx在webview中打开网页。当点击超链接时,该网页会打开一个新的弹出窗口。
如何打开新的弹出窗口,当尝试在默认的Web浏览器中打开相同的网页,如Chrome,IE它们会打开弹出窗口。
为创建弹出窗口我正在使用以下代码。
Group group= new Group();
Scene scene= new Scene(group);
fxpanel.setScene(scene);    
WebView webview = new WebView ();
group.getChildren().add(webview);
it().getScreenSize().height);  
webview.setVisible(true);
webview.getEngine().setOnAlert(null);

eng= webview.getEngine();
eng.setJavaScriptEnabled(true);




try{
   String url ="http://www.lawcrux.com/mkwebchatblog/loginp.aspx";


         eng.load(url);

         eng.setCreatePopupHandler(
        new Callback<PopupFeatures, WebEngine>() {
            @Override
            public WebEngine call(PopupFeatures config) {

                JOptionPane.showMessageDialog(null,"clicked");
                return eng;

            }
    });
1个回答

12

您需要自己创建WebView弹出窗口,并从回调中提供WebEngine。如果您需要新的窗口,请使用该WebView创建新的Stage(而不是Swing,JOptionPane无法存储JavaFX WebView)。

请参阅下一个示例:

    WebView wv = new WebView();
    wv.getEngine().setCreatePopupHandler(new Callback<PopupFeatures, WebEngine>() {

        @Override
        public WebEngine call(PopupFeatures p) {
            Stage stage = new Stage(StageStyle.UTILITY);
            WebView wv2 = new WebView();
            stage.setScene(new Scene(wv2));
            stage.show();
            return wv2.getEngine();
        }
    });


    StackPane root = new StackPane();
    root.getChildren().add(wv);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
    wv.getEngine().load("http://www.i-am-bored.com/pop_up_blocker_test.html");

如何获取 WebView 2 应该打开的 URL?我尝试创建自己的 WebView,嵌入到 JFrame 中等等,然后将其返回为类似于 myFrame.myJfxPane.getEngine() 的东西,但是 URL 并没有传递给 Engine。 - Myoch
@Myoch 请将它作为一个单独的问题提出,并提供您遇到问题的代码。 - Sergey Grinev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接