webview没有打开javafx中的弹出窗口

我正在尝试使用javafx在webview中打开一个网页。 单击超链接时,此网页会打开一个新的弹出窗口

我怎么能打开新的弹出窗口,当试图在默认的网页浏览器中打开相同的网页,如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() { @Override public WebEngine call(PopupFeatures config) { JOptionPane.showMessageDialog(null,"clicked"); return eng; } }); 

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

见下一个例子:

  WebView wv = new WebView(); wv.getEngine().setCreatePopupHandler(new Callback() { @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");