在 JRuby 中发出 HTTP 请求后直接执行 JS 的最高效方式是什么?我知道所有的测试框架,如 HtmlUnit、Celerity、Capybara + PhantomJS == Poltergeist、CasperJS 等,但它们仍然是测试框架。
我需要的是一种简单的方法来执行所有 JS 代码,这些代码在通过 Net::Http 获取 URL 后包含在 HTML 中。
在 JRuby 中发出 HTTP 请求后直接执行 JS 的最高效方式是什么?我知道所有的测试框架,如 HtmlUnit、Celerity、Capybara + PhantomJS == Poltergeist、CasperJS 等,但它们仍然是测试框架。
我需要的是一种简单的方法来执行所有 JS 代码,这些代码在通过 Net::Http 获取 URL 后包含在 HTML 中。
首先,不言而喻:不要在生产中这样做!
执行一些从互联网上某个地方提取的脚本是灾难的根源。如果您将它用作测试基础架构的一部分,它可能会有一些用处,但我猜想有一种更简单的方法可以解决您的问题。
为了回答更普遍的问题,下面是您如何初始化与 JDK 1.6+ 捆绑的 JavaScript 引擎(实际上是 Rhino 的精简版,尽管这可能会在 Java 8 中发生变化):
import javax.script.ScriptEngineManager
import javax.script.SimpleBindings
manager = ScriptEngineManager.new
engine = manager.getEngineByName("JavaScript")
bindings = SimpleBindings.new
bindings['x'] = 1
engine.eval("print(x)", bindings)
让您的引擎评估任何依赖项(如 jQuery)留给用户作为练习。查看javax.script JavaDoc。