在 java 程序中调用 Javascript 弹出窗口
Call Javascript Popup in java program
我正在尝试在 java 程序(网络)中显示弹出窗口。
我尝试将 ScriptEngine 与 javascript、nashorn 结合使用,但失败了。因为alert,confirm,prompt不是js的方法
java程序中的代码:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader("script.js"));
Invocable invocable = (Invocable) engine;
invocable.invokeFunction("openPopup", "ABC XYZ");
并在 script.js 中:
function openPopup(str){
alert(str);
}
运行吧,错误显示:
"alert" is undefined
说明
在 Java 中打开 Java脚本弹出窗口 不可能。 Java脚本引擎Nashorn不提供这个方法。它通常是由 浏览器 .
提供的功能
这也是您得到的原因:
"alert" is undefined
解决方案
您可以使用 Java 中的不同工具打开弹出窗口 windows,例如 Swing 或 JavaFX。您可以使用这些工具创建具有 图形用户界面 (GUI) 的程序,即 具有 windows.
这是 Oracle 关于如何使用 Swing 创建对话框的 official tutorial。
创建只是一个简单的弹出窗口的相关方法是:
JOptionPane.showMessageDialog(frame, "Hello world!");
其中 frame
是对 window 的引用,它应该是此弹出窗口的父项。但是,您可以简单地传递 null
以获得 快速而肮脏的弹出窗口 :
JOptionPane.showMessageDialog(null, "Hello world!");
只需使用上面的代码,导入 JOptionPane
就可以了:
import javax.swing.JOptionPane;
class 有更多有趣的检查方法,例如输入对话框。这是它的 documentation.
JavaFX 解决方案有点复杂,因为它需要您设置框架并处理多个事件。
您可以查看其他问题 SO: Popup window with table view in JavaFX 2.0. It uses the designated class Popup
(documentation)。
我正在尝试在 java 程序(网络)中显示弹出窗口。
我尝试将 ScriptEngine 与 javascript、nashorn 结合使用,但失败了。因为alert,confirm,prompt不是js的方法
java程序中的代码:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader("script.js"));
Invocable invocable = (Invocable) engine;
invocable.invokeFunction("openPopup", "ABC XYZ");
并在 script.js 中:
function openPopup(str){
alert(str);
}
运行吧,错误显示:
"alert" is undefined
说明
在 Java 中打开 Java脚本弹出窗口 不可能。 Java脚本引擎Nashorn不提供这个方法。它通常是由 浏览器 .
提供的功能这也是您得到的原因:
"alert" is undefined
解决方案
您可以使用 Java 中的不同工具打开弹出窗口 windows,例如 Swing 或 JavaFX。您可以使用这些工具创建具有 图形用户界面 (GUI) 的程序,即 具有 windows.
这是 Oracle 关于如何使用 Swing 创建对话框的 official tutorial。
创建只是一个简单的弹出窗口的相关方法是:
JOptionPane.showMessageDialog(frame, "Hello world!");
其中 frame
是对 window 的引用,它应该是此弹出窗口的父项。但是,您可以简单地传递 null
以获得 快速而肮脏的弹出窗口 :
JOptionPane.showMessageDialog(null, "Hello world!");
只需使用上面的代码,导入 JOptionPane
就可以了:
import javax.swing.JOptionPane;
class 有更多有趣的检查方法,例如输入对话框。这是它的 documentation.
JavaFX 解决方案有点复杂,因为它需要您设置框架并处理多个事件。
您可以查看其他问题 SO: Popup window with table view in JavaFX 2.0. It uses the designated class Popup
(documentation)。