アプレットからJavaScriptの関数を呼び出す

例えばアプレットで何かの処理をしていて、それが終わったタイミングで

  • JavaScriptのalertを呼んだり
  • ページを移動したり
  • その他もろもろ

といったような、何かしらのJavaScriptを動かしたいことがある。そんなときのやり方。

JSObject window = JSObject.getWindow(Applet.this);
window.eval("hoge()");

これで、アプレットが埋め込まれているhtml側に定義されてるJavaScripthoge関数が呼ばれる。いわゆるコールバック。

このhoge関数は、例えばこんな感じ。

function hoge(){
    alert('完了しました');
}

上記のようにすればalertされる。ページを移動したいなら、

function hoge(){
    location.href = 'http://example.com/complete.html';
}

こんな感じ。まあ普通のJavaScript。これをhtml側に用意しておけば良い。

plugin.jarをCLASS_PATHに追加

ここで注意点。JSObjectクラスは、そのままじゃ使えない。JREのlibディレクトリに入ってるplugin.jarをCLASS_PATHに追加するなりする必要がある。

例えばアプレットEclipseで作ってるなら、Javaのビルドパスに追加するとか。

ちなみにimport文は、

import netscape.javascript.JSObject;

こう。

アプレットを埋め込んでるタグにmayscriptを追加

さらにもう一点。アプレットを埋め込んでるhtmlタグにも定義が必要。

<param name="mayscript" value="true" />

これを、objectタグの中に書いておく。