- ベストアンサー
LiveConnectってIEではだめなの?
LiveConnectを使って、JAVAアプレットとJavaScript間のデータの受 け渡しをしたいのですが、調べているとネスケのみしか使えないよう なことがかかれていました。 実際の所どうなのでしょうか? ちなみにやり方がわからないので、それも合わせて調べていましたが、 参考になるサンプルがなくてちょっと苦戦しています。 サンプルはなかったものの、Publicで宣言してあれば、JavaScript側 から関数を普通に呼び出せば出来る。という風にかかれていまして、呼 び出してみた所ブラウザの下にエラーと表示されました。 以下のように二つ試してみました。 ※JAVAソース内にShokikaという関数名があるとします 1.ボタンのonClickに直接関数を呼び出す方法 <input type="button" value="リセット" onClick="Shokika()"> 2.JavaScript内で関数を呼び出す方法 <input type="button" value="リセット" onClick="JavaTest()"> <SCRIPT language=JavaScript> <!-- function JavaTest(){ Shokika(); } //-->
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
既に上記にて回答があるようですが、ここではチョット別 の方法を参考までに載せておきます。 1.コンパイルについて ネスケがインストールされていなくてもLiveConnect 関連のパッケージをwww.netscape.comからダウンロード すればjavaコンパイルは可能です。 具体的にはwinsdk40.zipというファイルをダウンロード します。 これをダウンロードしたらJDKのインストール先に適当な ディレクトリを作成後、そのディレクトリに解凍します 解凍されたファイルの中にjava_30.zipというファイル がありますのでこのファイルをクラスパスに指定します 後は以下のようにLineConnect関連をimportすればOK です。 import netscape.javascript.JSObject; 以下のjavaソースはJavaScriptのClickedメソッドを 呼んでいます。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import netscape.javascript.JSObject; public class AppletCall1 extends Applet implements MouseListener { JSObject win = null; Integer[] pnt = new Integer[2]; int x, y; // ここでJavaScriptのClickedメソッドを呼んでる public void mouseClicked(MouseEvent me) { x = me.getX(); y = me.getY(); pnt[0] = new Integer(x); pnt[1] = new Integer(y); win.call("Clicked", pnt); } public void mouseEntered(MouseEvent me){} public void mouseExited(MouseEvent me){} public void mousePressed(MouseEvent me){} public void mouseReleased(MouseEvent me){} public void init() { addMouseListener(this); try { win = JSObject.getWindow(this); } catch(Exception e) { e.printStackTrace(); } } } 2.Java2のよるAppletを呼ぶHTMLページ Java2ではOBJECTタグでAppletを呼ぶようになりました のでそのサンプルです。 ここでは<PARAM NAME="MAYSCRIPT" VALUE="true">が AppletからJavaScript関数callを許可しています。 <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-この関数がAppletから呼ばれる> function Clicked(x,y) { window.alert(x); window.alert(y); } </SCRIPT> </HEAD> <BODY> <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9- 00805F499D93" WIDTH = 300 HEIGHT = 300> <PARAM NAME = CODE VALUE = "AppletCall1" > <PARAM NAME="type" VALUE="application/x-java-applet;version=1.2"> <PARAM NAME="MAYSCRIPT" VALUE="true"> </OBJECT> </BODY> <HTML> 文章は汚いですが、参考までに 上記はJDK1.2.2、IE4,5で動作確認済みです。
その他の回答 (1)
- gengoro8
- ベストアンサー率25% (2/8)
IEでもLiveConnectは利用可能です。 JavaからJavaScriptを利用するためには、Netscapeに付いているJavaパッケージの中で必要なclassをインポートする必要があります。 必要なclassとはNetscapeがインストールされているディレクトリの\Netscape\Program\Java\classesの中にjava_301(Netscape3.01の場合)というファイルの中にあります。これはzip圧縮されいますので、その中のJSObject.classとJSException.classが必要なclassです。 これをうまくアプレットにインポートしてやれば、IEでもLiveConnectが使えます。やり方としては、この二つのclassを解凍し、適当なディレクトリにコピーし、そこにclassパスを通します。 例として、c:\netscape\program\java\classesの配下にコピーした場合、コンパイラがJDK1.1だとすると、 set classpath=.;C:\jdk1.1\lib\classes.zip;c:\netscape\program\java\classes\ となります。 JavaScriptのオブジェクトやメソッドを利用するためには、Javaアプレットコード中に import netscape.javascript.* を書く必要があります。 これで、DOS上でコードをコンパイルすれば上手くいきます。 ■Javaアプレットコードの例を挙げておきます。 import java.applet.*; import java.awt.*; import netscape.javascript.*; public class myAnimation extends Applet{ JSObject myWin; public void init(){ myWin = JOSbject.geWindow(this); } public boolean mousUp(Event e, int x, int y){ String args[] = {"Good Morning"}; myWin.call("alert",args); return true; } } ■HTMLファイルの例を挙げておきます 注意すべき点は、MAYSCRIPTと記述するところです。 <html> <body bgcolor = "skyblue"> <applet code = "myAnimation.class" width = 200 height=200 name="anime" MAYSCRIPT> </applet> </body> </html> では、ご検討をお祈りしています。
お礼
御礼が遅くなりましてすいませんでした。 非常にわかりやすかったです。 どうもありがとうございました。
お礼
御礼が遅くなりましてすいませんでした。 大変わかりやすいご説明のおかげで非常に理解しやすかったです。