7 管理Web弹出窗口
本章介绍如何使用WebView
组件来处理浏览器中的弹出窗口,并在WebViewSample应用程序中实现此功能。
当您需要在应用程序中打开一个新的浏览器窗口时,可以通过使用setCreatePopupHandler
方法将PopupFeatures
类的实例传递给在WebEngine
对象上注册的弹出窗口处理程序。
示例 7-1 处理弹出窗口的命令
final WebView smallView = new WebView(); smallView.setPrefSize(120, 80); //处理弹出窗口 webEngine.setCreatePopupHandler( (PopupFeatures config) -> { smallView.setFontScale(0.8); if (!toolBar.getChildren().contains(smallView)) { toolBar.getChildren().add(smallView); } return smallView.getEngine(); });
当用户从弹出菜单中选择在新窗口中打开链接选项时,smallView
浏览器将添加到应用程序工具栏中。这个行为由setCreatePopupHandler
方法定义,该方法返回一个替代浏览器的Web引擎,以通知应用程序在哪里渲染目标页面。修改应用程序并编译运行的结果如图7-2所示。
请注意,默认情况下,所有WebView
对象都启用上下文菜单。要为特定的WebView
实例禁用上下文菜单,请将false值传递给setContextMenuEnabled
方法:browser.setContextMenuEnabled(false);
。