|
LiveConnect のサポート
|
アプレット開発者ガイド > LiveConnect のサポート
目次
LiveConnect 仕様は、アプレット内の Java コードが Web ページ内の JavaScript と通信したり、その逆の通信を行ったりするための方法を定義します。アプレットで定義されたメソッドは、HTML ページで定義された JavaScript を呼び出すことができます。また、JavaScript も、アプレットやその他の Java 実行時ライブラリで定義されたメソッドを呼び出すことができます。
LiveConnect のサポートは、下位互換性を念頭において強化されています。static Java メソッドを呼び出したり、新しい Java オブジェクトをインスタンス化したり、JavaScript からサードパーティーのパッケージを参照したりする機能などの、以前は Mozilla に特有であった LiveConnect 機能が現在、すべてのブラウザで使用できます。
Netscape.javascript.JSObject
クラスを使用すると、アプレット内の Java コードと HTML ページ内の JavaScript の間の通信が可能になります。このクラスは、jre/lib
内のほかの jar とともに plugin.jar
ファイルに存在します。このクラスにアクセスするには、コンパイルのクラスパスに plugin.jar
ファイルを追加します。
Java アプレットは、Java から JavaScript への通信を行って Document Object Model (DOM) にアクセスするか、HTML ページ上で JavaScript 関数を呼び出す必要があります。ブラウザを使用すると、Java ラッパークラス netscape.javascript.JSObject
を介した Java と JavaScript 間の通信が可能になります。
ブラウザ間で JavaScript 描画エンジンの実装が異なるため、Java Plug-in が提供する JSObject
サポートは、Internet Explorer と Navigator で異なります。このドキュメントでは、異なるブラウザ環境で JSObject
サポートがどのように機能するかを説明します。
JSObject
の動作方法JSObject
を利用すると、HTML ページの DOM へのアクセスが容易になります。ただし、ブラウザが異なると DOM の実装方法も異なるため、Java アプレットで JSObject
を使用すると、Java Plug-in の動作がブラウザによって異なる場合があります。特定のブラウザでの DOM 実装の詳細は、ブラウザの開発者ガイドを参照してください。
一般に、アプレットは次の方法で JSObject
にアクセスします。
import netscape.javascript.*; import java.applet.*; import java.awt.*; class MyApplet extends Applet { public void init() { JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject) win.getMember("document"); JSObject loc = (JSObject) doc.getMember("location"); String s = (String) loc.getMember("href"); // document.location.href win.call("f", null); // Call f() in HTML page } } |
開始位置は、static
メソッドです。
public static JSObject getWindow(Applet a)
このメソッドにより、指定されたアプレットを含む Window
を表す JSObject
が返されます。このメソッドは、パラメータとして java.applet.Applet
のみを取るため、アプレットから JSObject
にアクセスできますが、Bean がアプレットでない限り、Bean からアクセスすることはできません。
Window
オブジェクトの取得が完了したら、アプレットは次のメソッドを使用して HTML ページの DOM をナビゲートできます。
public Object call(String methodName, Object args[])
public Object eval(String s)
public Object getMember(String name)
public Object getSlot(int index)
public void removeMember(String name)
public void setMember(String name, Object value)
public void setSlot(int index, Object value)
public String toString()
public boolean equals(Object obj)
Java Plug-in では、getWindow()
、call()
、eval()
、setMember()
、および getMember()
だけを使用することをお勧めします。getSlot()
、setSlot()
、removeMember()
、および toString()
の実装はブラウザに依存するため、実行結果は、Java Plug-in が稼動しているブラウザのバージョンおよびプラットフォームにより異なります。
Java コードをコンパイルして JSObject
を利用するには、CLASSPATH
内に netscape.javascript パッケージを保持する必要があります。Java Plug-in 1.4.2 以降は、JAR ファイル plugin.jar
内に netscape.javascript が含まれています。JSObject
を使用するアプレットをコンパイルするには、コンパイルする前に、 CLASSPATH
に plugin.jar
を追加する必要があります。
JSObject
は、Java Plug-in ではサポートされますが、Java SE プラットフォームの AppletViewer ではサポートされないことに留意してください。このため、JSObject
を使用するアプレットは、AppletViewer では動作しないか、例外が発生します。
JSObject
サポートの有効化 セキュリティー上の理由で、Java Plug-in の JSObject
サポートは、デフォルトでは無効に設定されています。Java Plug-in の JSObject
サポートを有効にするには、次に示すように、EMBED/OBJECT
タグ内に新規属性 MAYSCRIPT
が存在する必要があります。
APPLET
タグ: <APPLET code="XYZApp.class" codebase="html/" align="baseline" width="200" height="200" MAYSCRIPT> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz"> No JDK 1.3 support for APPLET!! </APPLET> |
OBJECT
タグ: <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="200" height="200" align="baseline" codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0"> <PARAM NAME="code" VALUE="XYZApp.class"> <PARAM NAME="codebase" VALUE="html/"> <PARAM NAME="type" VALUE="application/x-java-applet;version=1.3"> <PARAM NAME="MAYSCRIPT" VALUE="true"> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz"> No JDK 1.3 support for APPLET!! </OBJECT> |
EMBED
タグ:<EMBED type="application/x-java-applet;version=1.3" width="200" height="200" align="baseline" code="XYZApp.class" codebase="html/" model="models/HyaluronicAcid.xyz" MAYSCRIPT=true pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"> <NOEMBED> No JDK 1.3 support for APPLET!! </NOEMBED> </EMBED> |
MAYSCRIPT
が false に指定されているか、MAYSCRIPT
が存在しない場合、JSObject
は無効になります。EMBED/OBJECT
タグ内の MAYSCRIPT
属性の詳細は、「Java Plug-in での OBJECT
、EMBED
、および APPLET
タグの使用」を参照してください。
JavaScript および LiveConnect は、Netscape Communications Corporation のテクノロジです。Mozilla および Microsoft で実装される Javascript エンジンが異なっているため、LiveConnect を使用した Java と JavaScript 間のデータ整列化によって、ブラウザ間で異なるデータ型が生成されることがあります。ベンダー間での JavaScript 実装の主な相違点は、JavaScript データ型のサポート、Java と JavaScript 間でのデータ型のマッピング、および DOM 要素の実装です。
JSObject およびデータ型の変換を含む Java から JavaScript への通信の詳細は、次を参照してください。
アプレットの HTML ページに、以下を含める必要があります。
これらのタグについて、以下で説明します。
ID パラメータは、アプレットの記号名です。ID パラメータを使用してアプレットの記号名が確立されると、以降は、この名前を利用してアプレットを参照できます。
たとえば、Fractal と呼ばれるアプレットを保持している場合を考えましょう。OBJECT タグに ID パラメータを追加して、ID をアプレットの記号名に設定します。次のようにタグを設定できます。
これで、スクリプト内で Fractal という名前を使用して、Fractal アプレットを参照できます。ID="Fractal"
この Fractal アプレットの例を使用する場合、HTML ページには、最初に FORM タグ、次に OBJECT タグが記述されます。次に、これらのタグを示します。
<form name="Form1"> <OBJECT ID="Fractal" WIDTH=500 HEIGHT=120 CLASSID="CLSID:8AD9C840-044E-11d1-B3E9-00805F499D93" <PARAM NAME="code" value="CLSFractal.class"> <PARAM NAME="codebase" value="1.0.2"> <PARAM NAME="level" value="5"> ... </OBJECT>
HTML ページで定義されたコンポーネントの目的は、ユーザーによりトリガーされた操作を呼び出すことです。これらのコンポーネントの定義には、INPUT タグを使用します。コンポーネントの TYPE タイプ (button、NAME、および VALUE) を指定します。ボタンまたは他のコンポーネントから目的の操作を呼び出すために、以下を指定するタグを追加する必要があります。
たとえば、HTML ページにより作成されたボタンをクリックすると、特定のアニメーションが開始される場合を考えてみましょう。HTML タグによりボタンが作成され、ボタンに名前と値 (ラベル) が与えられます。
これを実行するには、2 つのタグを追加します。1 つのタグは、特定の操作 (onclick
など) の実行時に、対応するスクリプトメソッドが呼び出されることを示します。タグは、onClick="method name" という形式になります。メソッド名は、同じ HTML ページ内のスクリプトメソッドです。
したがって、HTML ページに次のように記述できます。
<input type="button" name="Button1" value="Start" onClick="startJSFractal" language="JavaScript">
この INPUT タグによりボタンが作成され、ボタン名が「Button1」、値 (ボタン上に表示されるラベル) が「Start」に指定されます。このタグにより、ユーザーがボタンをクリックすると呼び出されるスクリプトメソッド、およびスクリプトメソッドの言語も指定されます。この例では、スクリプトメソッドは startJSFractal、スクリプト言語は JavaScript です。ユーザーがこのボタンをクリックすると、HTML ページが拡張され、JavaScript で記述されたスクリプトメソッド startVBFractal が呼び出されます。
たとえば、同一の HTML ページは、次の SCRIPT タグを保持します。
<SCRIPT language="JavaScript"> function startJSFractal() { document.Form1.Fractal.startFractal() } </SCRIPT>
この例の SCRIPT タグでは、スクリプト言語が JavaScript であることが最初に指定されています。次に JavaScript の function
文が続きます。この文では、スクリプトメソッドが最初に定義されています。function
文では、スクリプトメソッドのラベルまたは名前が startJSFractal として指定されています。この名前は、入力コンポーネントの action パラメータに指定されたメソッド名と一致している必要があります。
この例では、onClick パラメータおよび function 文の両方で、同じスクリプトメソッドが指定されています。スクリプトメソッド startJSFractal は、アプレットコード内で実装された実際のメソッド startFractal() を呼び出すだけです。これは、メソッド名を、ドキュメントフォーム名、アプレット名 (OBJECT
ID
)、メソッド名の順に使用して修飾した名前です。
document.Form1.Fractal.startFractal()
Copyright © 2008 Sun Microsystems, Inc. All Rights Reserved. フィードバック |
|