0

在 JRuby 中发出 HTTP 请求后直接执行 JS 的最高效方式是什么?我知道所有的测试框架,如 HtmlUnit、Celerity、Capybara + PhantomJS == Poltergeist、CasperJS 等,但它们仍然是测试框架。

我需要的是一种简单的方法来执行所有 JS 代码,这些代码在通过 Net::Http 获取 URL 后包含在 HTML 中。

4

1 回答 1

0

首先,不言而喻:不要在生产中这样做!

执行一些从互联网上某个地方提取的脚本是灾难的根源。如果您将它用作测试基础架构的一部分,它可能会有一些用处,但我猜想有一种更简单的方法可以解决您的问题。

为了回答更普遍的问题,下面是您如何初始化与 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。

如果您需要对评估环境进行更多控制,则必须直接使用Rhino,或者等待Nashorn ...

于 2013-05-20T13:23:24.343 回答