|
|
「Java SE 6完全攻略」番外編 Java SE 6u10の新機能 その17先週は次世代Java Plug-inのLiveConnectを使用して,HTMLドキュメントに埋めこまれたJavaScriptからJavaへのアクセスについて解説しました。今週は,その逆。LiveConnectを使用して,JavaからHTMLに埋めこまれたJavaScriptにアクセスしてみましょう。 JavaからJavaScriptへのアクセスJavaではJavaScriptのオブジェクトはすべて,netscape.javascript.JSObjectクラスのオブジェクトとして扱われます。 JSObjectクラスはパッケージ名からもわかるとおり,NetscapeのLiveConnectに由来しています。このため,通常のAPIドキュメントにはJSObjectクラスのJavadocがありません。 JSObjectクラスと例外クラスのJSExceptionのJavadocはこちらのURLにあります。できれば,通常のAPIドキュメントに含めていただきたいところですね。 JSObjectクラスが定義しているメソッドは8種類しかありません。以下に列挙します。
これらのメソッドはすべてJSException例外を投げます。ただし,JSException例外はランタイム例外なので,try ... catchを書く必要はありません。 それぞれのメソッドの使い方はサンプルで示していきます。 HTMLドキュメントに埋めこまれたJavaScriptでは,Windowオブジェクトが重要になります。JSObjectクラスではstaticメソッドであるgetWindowメソッドで,Windowオブジェクトに対応するJSObjectオブジェクトを取得できます。 関数のコールや,スクリプトの評価などはすべてWindowオブジェクトに対応するJSObjectオブジェクトに対して行います。 たとえば,JavaScriptのsayHello関数をコールするには,次のように記述します。
getWindowメソッドは前述したようにstaticメソッドで,Appletオブジェクトを引数にします。 JavaScriptの関数をコールするcallメソッドは第1引数が関数名,第2引数が関数の引数を配列にしたものです。callメソッドの戻り値は関数の戻り値で,その型はObjectクラスです。したがって,必要に応じてキャストを行います。 引数や戻り値は,先週解説した型変換の規則によって変換されます。ただし,JavaScriptの配列はJavaの配列に変換されません。詳しくは後述します。 JavaScriptのsayHello関数を以下に示します。
文字列を連結して返しているだけの単純な関数です。 この例では直接関数をコールしましたが,関数をコールするスクリプトを評価することでも同じことが実現できます。JavaScriptのスクリプトを評価するにはevalメソッドを使用します。
文字列でスクリプトを記述し,evalメソッドの引数に指定します。ここでは'World'を引数にしてsayHello関数をコールするスクリプトを記述してあります。 evalメソッドの戻り値はスクリプトを評価した結果になります。evalメソッドも戻り値の型はObjectクラスなので,必要に応じてキャストするようにします。
>> コンパイル
連載新着連載目次へ >>
|