javascript - 从 Java 运行 Javascript(但需要 jQuery、DOM 和 ajax)

标签 javascript java

我正在构建一个包含图表的网络应用程序。

对于图表,我使用了 jsPlumb 库 链接:https://jsplumbtoolkit.com/

我的要求之一是在图表内制作像流程图一样的 block 。 其中一种类型的 block 可以通过可定制的脚本插入。 因此,当用户双击该 block 时,他们可以在文本区域中输入 Javascript 代码,并稍后执行。

这就是我的问题: 当脚本代码仍在前端(jsp)时,我能够使用浏览器使用 Javascript 中的“新函数”很好地运行脚本代码。 但是保存 block 后,脚本保存到数据库中。 如果我需要再次运行它,那么它将从后端(Java)执行。

因此,我使用 ScriptEngine 来运行 Javascript。 问题是 Java 无法识别 ajax、$-sign、console 等。 后来我发现,ScriptEngine 不支持这类事情。

所以,我想知道是否有任何可能的方法使这些成为可能? 我愿意接受其他替代想法。

谢谢

最佳答案

使用HtmlUnit Java Library

示例代码

final WebClient webClient = new WebClient(BrowserVersion.CHROME);
final HtmlPage page = webClient.getPage("http://127.0.0.1:9090/mysite");
page.executeJavaScript("$");
webClient.close();

这个http://127.0.0.1:9090/mysite可以是你本地已经有jquery的网站

您还可以在空白 html 页面中即时注入(inject)脚本标记

如果您使用代理,那么

final WebClient webClient = new WebClient(BrowserVersion.CHROME, "proxyhost", 8080);

替代想法

使用Jaunt - Java Web Scraping & JSON Querying Java 库

站点中提供示例代码和完整文档

关于javascript - 从 Java 运行 Javascript(但需要 jQuery、DOM 和 ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57671922/

相关文章:

javascript - 如何将结果保存到 localStorage

javascript - 如何在 JavaScript 中循环遍历数组并在两个不同位置呈现项目

javascript - 如何启用内联执行(chrome 扩展)

javascript - 调整大小后的 jQuery 动画

javascript - 幻灯片画廊制作成自动画廊

java - testng 范围报告中的测试和步骤之间的区别

java - 错误:Exception in thread "main" java. lang.OutOfMemoryError:Java堆空间

java - 在 for 循环中查找值的最大值/最小值

java - 设计自己的实现以提高代码可维护性

java - 调用方法 ".class expected"