我正在尝试使用 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<PopupFeatures, WebEngine>() {
@Override
public WebEngine call(PopupFeatures config) {
JOptionPane.showMessageDialog(null,"clicked");
return eng;
}
});
最佳答案
您需要自己创建 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");
关于java - webview 没有在 javafx 中打开弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370622/