webview未在javafx中打开弹出窗口

我正在尝试使用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;

}

});

回答:

您需要自己创建WebView弹出窗口,并从回调中提供WebEngine。如果需要新窗口,请使用该WebView创建一个新的舞台(不是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未在javafx中打开弹出窗口 的全部内容, 来源链接: utcz.com/qa/410653.html

回到顶部