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();
}
//-->
No.1
- 回答日時:
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>
では、ご検討をお祈りしています。
No.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で動作確認済みです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
ボタンのイベントで異なるウィ...
-
C#でのWNetAddConnection3の使...
-
Processingでマウスクリックで...
-
C# MouseHoverを何度も呼ぶには
-
Junitテストでvoid戻り値メッソ...
-
[C#.net]スレッド化された別フ...
-
swt の Spinner クラスについ...
-
【Java】画像表示が出来ない!
-
C#で別のFormへ複数の値を返そ...
-
アプレットで再描画をする時ち...
-
シリアル通信で受信したデータ...
-
Graphicsクラスを使って描画履...
-
円をジャンプ
-
Path型をString型へ変換する(Java)
-
JSPやサーブレットでSystem.out...
-
Java配列でNullPointerExceptio...
-
System.err. printlnとSystem.o...
-
動的配列が存在(要素が有る)か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
C#でのWNetAddConnection3の使...
-
Junitテストでvoid戻り値メッソ...
-
ボタンの複数割り当てについて
-
C# DataGridView列カスタマイズ
-
C# WinForm のDataGridView Cel...
-
C# visibleプロパティをfalseに...
-
[C#.net]スレッド化された別フ...
-
C# 矢印キーの取得
-
unityでのC++エラーの原因がわ...
-
C#から、C++で作成したdll内の...
-
コンボボックスを使う時の警告
-
JavaFXでの表内のチェックボッ...
-
C#で別のFormへ複数の値を返そ...
-
vc++ 2005 Pictureboxの透過処理
-
プログラミング(Java)じゃん...
-
C#でキーイベントが発生しない...
-
正規表現
-
C# MouseHoverを何度も呼ぶには
おすすめ情報