假设我有一些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(不在applet中)中运行此代码并获取内容。如何让引擎知道要构造的类的源代码是否在远程.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字符串吗?
答案 0 :(得分:2)
好像你在问:
如何让
ScriptEngine
评估网址而不只是字符串?
这是准确的吗?
ScriptEngine
没有提供下载和评估网址内容的工具,但这很容易做到。 ScriptEngine
允许您传入将用于阅读脚本的Reader
对象。
尝试这样的事情:
URL url = new URL( "http://someplace.net/stuff.ashx" );
InputStreamReader reader = new InputStreamReader( url.openStream() );
engine.eval( reader );
答案 1 :(得分:0)
您是否尝试从java 1.6 applet访问浏览器页面中的javascript对象?如果是这样,你就会以错误的方式解决这个问题。这不是脚本引擎的用途。它用于在jvm中运行javascript,而不是用于在浏览器中访问javascript的applet。
这里有blog entry,可能会让你到达某个地方,但看起来并没有太大的支持。