对带有外部src属性的javascript使用javax.script包
时间:2020-03-06 14:22:25 来源:igfitidea点击:
说我有一些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字符串吗?
解决方案
似乎我们在问:
How can I get ScriptEngine to evaluate the contents of a URL instead of just a string?
准确吗?
ScriptEngine没有提供用于下载和评估URL内容的功能,但是很容易做到。 ScriptEngine允许我们传入一个Reader对象,该对象将用于读取脚本。
尝试这样的事情:
URL url = new URL( "http://someplace.net/stuff.ashx" ); InputStreamReader reader = new InputStreamReader( url.openStream() ); engine.eval( reader );
我们是否要从Java 1.6小程序访问浏览器页面中的javascript对象?如果是这样,我们将以错误的方式进行操作。那不是脚本引擎的目的。它用于在jvm中运行javascript,而不是用于applet从浏览器中访问javascript。
这是一个博客条目,可能会带我们到某个地方,但是看起来并没有太多支持。