重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

HTMLで、

<applet code = "XXX.class" width="100" height="100" name="app1">
</applet>

JavaScriptで

document.app1.showString("表示");


アプレットコード内に
showString(String text)というメソッドを用意して、JavaScript側からアプレットにテキストを送っています。

このアプレットはチャットプログラムのクライアントとして動作していて、ブラウザの閉じるボタンでログアウトメソッドを呼ぶように作られています。

しかし、JavaScriptで用意したテキストボックスにテキストを打ち込んで送信するときに

リターンキーを使うと、アプレットはブラウザの閉じるボタンを押したと判定して、ログアウトしてしまいます。

アクションリスナーを設定すれば、テキストの内容をリターンキーで送信できるようですが、

JavaScriptで用意したテキストボックスに、アクションリスナーを設定する方法がわかりません。

よろしくお願いします。

送信ボタンでテキストを送信することはできるのですが、
多くのチャットプログラムはリターンキーで送信できますので、リターンキーを使える方法を教えて下さい。

A 回答 (1件)

まず、チャット等でエンターで送信が出来るのは、


formのアクション先に対してのサブミットがあるからだと思います。
同じ方法を取ろうとするとサーブレット等を用意してそちらにサブミット
をかけて、データを受け取り、処理を行って、クライアントに表示する
形になると思います。(多くのチャット)

以下のソースで一応思っているような動きにはなっていると思いますが
いかがでしょうか。(多分IE限定かな?IEのみでしか確認していません)
*インデントに全角空白使用しています。

======================================================================================
<html>
<head>
<title>テスト</title>
<script type="text/javascript">
<!--
  function submitText () {
    if ( event.keyCode == 13 ) {
      document.app1.showString(document.form1.msg.value);
      return false;
    }
  }
//-->
</script>
</head>
<body>
<form name="form1">
<input type="text" name="msg" onkeydown="return submitText();">
</form>
</body>
</html>
======================================================================================

何を行っているかというと、テキストエリアに文字を入力する際のイベントで
押すごとに関数を呼び出しています。
そこで、エンターキー(event.keyCodeで取得し'13'だった場合)が押された場合
アプレット内のshowStringメソッドに対し、テキストエリアであるmsgの値を取得して
渡しています。

>JavaScriptで用意したテキストボックスに、アクションリスナーを設定する方法がわかりません。

アクションリスナーとはJavaの機能と考えてください。JavaScriptとJavaは外見そっくりですが
違うものです。

他にも方法があるのかもしれませんがどうでしょうか。

この回答への補足

補足いたします。

JAVAアプレットのログアウトメソッドのソースです。

////////////////////// 破棄
public void destroy()
{
// ログアウト処理
// ブラウザが閉じられた場合や別のページへ移った場合はログアウト
LogOut();
}

補足日時:2004/10/19 18:13
    • good
    • 0
この回答へのお礼

LancerVIIさん
こんにちは。
早速試して見たのですが、テキストボックスに入力後、

リターンキーを押すとやはり、ログアウトしてしまいます。

JAVAの方がイベントの取得タイミングが速いのでしょうか。

お礼日時:2004/10/19 18:13

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