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」エンジンは、リモートの .ashx ファイルに情報があるため、デフォルトでは TheStuff クラスについて何も知りません。これを上記の src 文字列に見えるようにすることはできますか?

4

2 に答える 2

2

あなたが尋ねているようです:

ScriptEngine文字列だけでなく、URLの内容を評価するにはどうすればよいですか?

それは正確ですか?

ScriptEngineURLのコンテンツをダウンロードして評価する機能はありませんが、実行はかなり簡単です。 スクリプトの読み取りに使用するオブジェクト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 オブジェクトにアクセスしようとしていますか? もしそうなら、あなたは間違った方法でそれについて行っています。それはスクリプト エンジンの目的ではありません。これは、アプレットがブラウザから JavaScript にアクセスするためではなく、jvm 内で JavaScript を実行するためのものです。

これはあなたをどこかに連れて行くかもしれないブログエントリですが、あまりサポートがないようです.

于 2008-09-18T21:01:02.627 に答える