1

假设我有一些 javascript,如果在浏览器中运行会这样输入......

<script type="text/javascript"
    src="http://someplace.net/stuff.ashx"></script>

<script type="text/javascript">
   var stuff = null;
   stuff = new TheStuff('myStuff');
</script>

...并且我想使用 java 1.6 中的 javax.script 包在 jvm 中(而不是在小程序中)运行此代码并获取内容。如何让引擎知道要构造的类的来源在远程 .ashx 文件中?

例如,我知道将 java 代码编写为...

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");

engine.eval( "stuff = new TheStuff('myStuff');" );
Object    obj = engine.get("stuff");

...但是“JavaScript”引擎默认情况下对 TheStuff 类一无所知,因为该信息位于远程 .ashx 文件中。我可以让它看看上面的 src 字符串吗?

4

2 回答 2

2

好像你在问:

如何ScriptEngine评估 URL 的内容而不仅仅是字符串?

那准确吗?

ScriptEngine不提供下载和评估 URL 内容的工具,但它很容易做到。 ScriptEngine允许您传入Reader将用于读取脚本的对象。

尝试这样的事情:

URL url = new URL( "http://someplace.net/stuff.ashx" );
InputStreamReader reader = new InputStreamReader( url.openStream() );
engine.eval( reader );
于 2008-09-18T21:00:32.690 回答
0

您是否尝试从 java 1.6 小程序访问浏览器页面中的 javascript 对象?如果是这样,那你就走错了路。这不是脚本引擎的用途。它用于在 jvm 中运行 javascript,而不是用于小程序从浏览器中访问 javascript。

这是一个博客条目,可能会带您到某个地方,但看起来没有太多支持。

于 2008-09-18T21:01:02.627 回答