アプリ版:「スタンプのみでお礼する」機能のリリースについて

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();
}
//-->

A 回答 (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で動作確認済みです。
    • good
    • 0
この回答へのお礼

御礼が遅くなりましてすいませんでした。

大変わかりやすいご説明のおかげで非常に理解しやすかったです。

お礼日時:2001/03/26 09:28

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>


では、ご検討をお祈りしています。
    • good
    • 0
この回答へのお礼

御礼が遅くなりましてすいませんでした。

非常にわかりやすかったです。

どうもありがとうございました。

お礼日時:2001/03/26 09:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!