🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> 默认是不弹出任何对话框的,可以注册默认实现browser.setDialogHandler(new DefaultDialogHandler(browserView)); JavaScript引擎提供三种类型的对话框:警报,确认和提示。当JavaScript引擎需要显示其中一个对话框时,会调用DialogHandler的相应方法: * 该DialogHandler.onAlert()时,应显示JavaScript警告对话框方法被调用。它发生在调用window.alert() JavaScript函数时。该对话框显示文本消息和“确定”按钮。在关闭“警报”对话框之前,将阻止JavaScript执行。 * 该DialogHandler.onConfirmation()时,应显示的JavaScript确认对话框方法被调用。它发生在调用window.confirm() JavaScript函数时。该对话框显示文本消息,“确定”和“取消”按钮。如果用户单击“确定”,则该框返回true。如果用户单击“取消”,则该框返回false。在“确认”对话框关闭之前,将阻止JavaScript执行。 * 所述DialogHandler.onPrompt()时应当显示的JavaScript提示对话框方法被调用。它发生在调用window.prompt() JavaScript函数时。该对话框显示一个文本输入字段,用户可以在其中输入一些文本,“确定”和“取消”按钮。要将新的提示文本提供回JavaScript,可以使用PromptDialogParams.setPromptText(String)方法。如果用户单击“确定”,则该框返回输入值。如果用户单击“取消”,则该框返回null。在关闭“提示”对话框之前,将阻止JavaScript执行。 默认情况下,JxBrowser不显示JavaScript对话框并使用静默模式,其中所有对话框都自动关闭,当用户单击对话框上的“ 取消”按钮时,模拟行为。 要显示JavaScript对话框,您可以注册自己的DialogHandler实现,该实现显示适当的UI对话框。例如,以下代码演示了如何注册使用Java Swing API显示Alert对话框的自定义DialogHandler实现,并取消确认和提示对话框: ``` browser.setDialogHandler(new DialogHandler() { @Override public void onAlert(DialogParams params) { String url = params.getURL(); String title = "The page at " + url + " says:"; String message = params.getMessage(); JOptionPane.showMessageDialog(null, message, title, JOptionPane.PLAIN_MESSAGE); } @Override public CloseStatus onConfirmation(DialogParams params) { return CloseStatus.CANCEL; } @Override public CloseStatus onPrompt(PromptDialogParams params) { return CloseStatus.CANCEL; } ... }); ``` 或者您可以注册 已实现的JxBrowser的 DialogHandler 实现并显示UI对话框: Swing ``` import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.swing.BrowserView; import com.teamdev.jxbrowser.chromium.swing.DefaultDialogHandler; Browser browser = new Browser(); BrowserView browserView = new BrowserView(browser); browser.setDialogHandler(new DefaultDialogHandler(browserView)); ``` JavaFX ``` import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.javafx.BrowserView; import com.teamdev.jxbrowser.chromium.javafx.DefaultDialogHandler; Browser browser = new Browser(); BrowserView browserView = new BrowserView(browser); browser.setDialogHandler(new DefaultDialogHandler(browserView)); ```