我正在构建一个包含图表的网络应用程序。
对于图表,我使用了 jsPlumb 库 链接:https://jsplumbtoolkit.com/
我的要求之一是在图表内制作像流程图一样的 block 。 其中一种类型的 block 可以通过可定制的脚本插入。 因此,当用户双击该 block 时,他们可以在文本区域中输入 Javascript 代码,并稍后执行。
这就是我的问题: 当脚本代码仍在前端(jsp)时,我能够使用浏览器使用 Javascript 中的“新函数”很好地运行脚本代码。 但是保存 block 后,脚本保存到数据库中。 如果我需要再次运行它,那么它将从后端(Java)执行。
因此,我使用 ScriptEngine 来运行 Javascript。 问题是 Java 无法识别 ajax、$-sign、console 等。 后来我发现,ScriptEngine 不支持这类事情。
所以,我想知道是否有任何可能的方法使这些成为可能? 我愿意接受其他替代想法。
谢谢
最佳答案
示例代码
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/