java - 使用 Java 代码中的 Javascript 函数关闭 Windows 资源管理器弹出窗口

标签 java javascript

如何在Java代码中使用Javascript函数关闭Windows资源管理器弹出窗口?

我必须在我的 java 代码中关闭 Windows 资源管理器弹出窗口。我正在使用 javascript 函数 window.close() 来关闭它,因为此窗口弹出窗口正在破坏我的循环。

这是一段代码:

  ScriptEngineManager manager = new ScriptEngineManager();  
  ScriptEngine engine = manager.getEngineByName("JavaScript"); 
  String script = "function winClose() {"+"var close_result =  window.parent.close();"+"" +"document.getElementById('close_result').value =   close_result;"+"console.log(\"change the box value\");}";  
  engine.eval(script);  
  Invocable inv = (Invocable) engine;  
  inv.invokeFunction("winClose", "Window close!!" ); 

但是它给了我一个异常,即window未定义。

其实我从来没有在Java代码中使用过Javascript。所以请帮我解决 Javascript 中的窗口关闭功能。

最佳答案

虽然你没有提到这一点,但我希望你的java代码是applet的一部分。在这种情况下,您应该使用实时连接 API,而不是 ScriptingEngineManager。

ScriptingEngineManager 仅运行 Rhibno - JavaScript 语言的纯 java 实现。您可以在小程序(在浏览器中运行)中使用它,也可以不使用它。您以这种方式运行的引擎完全独立于运行到浏览器中的 JavaScript,因此不知道浏览器注入(inject)到其上下文中的任何对象,例如 windowdocument

请查看live connect文档和示例以获取更多详细信息。不久它最初是由 Netscape 技术开发的,允许小程序与它们运行的​​页面进行通信。因此,包装中包含该公司的名称。

但请注意:小程序在大约 10 年前就已经过时了,并且如今已成为众所周知的死亡技术。我可以建议您仔细检查一下您是否确实想使用它吗?有瘦客户端替代方案 - 检查它们。

关于java - 使用 Java 代码中的 Javascript 函数关闭 Windows 资源管理器弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16516018/

相关文章:

java - 两个线程通过同步方法访问队列;一个可以严格优先于另一个吗?

java - Hibernate Enver 不审核软删除中使用的字段?

Java ArrayList<Double> 作为参数

java - Do while 循环比较字符串

javascript - 我正在阅读 EJS 教程,对打开和关闭 <% 和 %> 的确切位置感到困惑?

javascript - 移动设备的特定 css 但不基于屏幕分辨率

java - mouseEntered() 和 mouseMoved() 之间的混淆

javascript - 了解提交的表格

Javascript - 如何使用 RegExp 识别模式

javascript - 公共(public)目录中的资源不可用