假设我有一些javascript,如果在浏览器中运行,它会像这样输入...
<script type="text/javascript"
src="http://someplace.net/stuff.ashx"></script>
<script type="text/javascript">
var stuff = null;
stuff = new TheStuff('myStuff');
</script>..。我想使用java1.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");...but默认情况下,"JavaScript“引擎不知道有关TheStuff类的任何信息,因为这些信息在远程.ashx文件中。我能让它看起来像上面的src字符串吗?
发布于 2008-09-18 21:00:33
看起来你在问:
如何让
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-18 21:01:03
您是否正在尝试从java1.6applet访问浏览器页面中的javascript对象?如果是这样的话,你就走错了路。这不是脚本引擎的作用。它是为了在jvm中运行javascript,而不是为了让applet在浏览器中访问javascript。
这里有一个blog entry,它可能会让你有所作为,但它看起来没有多少支持。
https://stackoverflow.com/questions/94582
复制相似问题