• ベストアンサー

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

  • gal
  • お礼率100% (8/8)
  • Java
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • hidebu
  • ベストアンサー率100% (1/1)
回答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で動作確認済みです。

gal
質問者

お礼

御礼が遅くなりましてすいませんでした。 大変わかりやすいご説明のおかげで非常に理解しやすかったです。

その他の回答 (1)

  • gengoro8
  • ベストアンサー率25% (2/8)
回答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> では、ご検討をお祈りしています。

gal
質問者

お礼

御礼が遅くなりましてすいませんでした。 非常にわかりやすかったです。 どうもありがとうございました。

関連するQ&A

  • JavaScriptのinput要素のonclick内で直接JavaS

    JavaScriptのinput要素のonclick内で直接JavaScript文を書きたい <input type="button" onclick="func()" value="ボタン"> のようにonclick内で関数を呼び出すことはできますが、 以下のようにスクリプトを直接書き込むのは可能でしょうか? (これは私が適当に考えただけなので多分動作はしませんが) <input type="button" onclick="javascript:( var a = 123; alert( a ); )" value="ボタン"> というのもちょっと試したいだけのときなど、 なるべく外部呼出しにしたくないことも多々あるもので・・

  • データベースから取り出したテキストの改行

    MYSQL+PHP+JAVASCRIPT にてサイトを作っています。 行き詰っております。助けてください。 MYSQLからPHPにてテキストデータをとりだし、JAVASCRIPTに引き渡したいのですが、上手くいきません。 -----状況----- データベースから変数$strを取り出し、次のコードでJAVASCRIPTの関数sampleに$strを渡しまます。 <input type="button" value="実行" onClick="sample('<?=$str?>')"> ここで、$strに改行が含まれていると、 <input type="button" value="実行" onClick="sample('こんにちは 太郎さん')"> のように2行に分割されたhtmlが書き出されてしまい、JAVASCRIPTでエラー(unterminated string literal)が出てしまいます。 この改行を変換してやる必要がありそうなのですが、その方法がわかりません。 以上、長い質問ですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • javascriptで電卓を作成

    プログラミングをまったくやったことがない状態から、ドットインストールやテックアカデミーのHTML,CSS,Javascriptの入門動画をすべて見終わった段階ですので、 基本的な仕組みと関数やfor文、if文、while文、などについてくらいは理解しています。 今回、javascriptを使って電卓のシステムを組む、という課題があり、 ネットで検索してやってみてはいるのですが行き詰っています。 最初は以下のような形で作成をしていました。 <body> <form name="myform">  <table border="1"> <tr> <td colspan="4"> <input type="text" name="result" value="" id="result"> </td> </tr> <tr> <td><input type="button" value=" "onclick="calc(' ')" ></td> <td><input type="button" value="%"onclick="calc('%')"></td> <td colspan="2"> <input type="button" value="AC" onclick="calc('AC')"></td> </tr> <tr> <td><input type="button" value="7" onclick="calc('7')"></td> <td><input type="button" value="8" onclick="calc('8')"></td> <td><input type="button" value="9" onclick="calc('9')"></td> <td><input type="button" value="÷" onclick="calc('÷')"></td> </tr> <tr> <td><input type="button" value="4"onclick="calc('4')" ></td> <td><input type="button" value="5"onclick="calc('5')" ></td> <td><input type="button" value="6"onclick="calc('6')"></td> <td><input type="button" value="×" onclick="calc('×')"></td> </tr>   <tr> <td><input type="button" value="1" onclick="calc('1')" ></td> <td><input type="button" value="2" onclick="calc('2')"></td> <td><input type="button" value="3" onclick="calc('3')"></td> <td><input type="button" value="-" onclick="calc('-')"></td> </tr> <tr> <td><input type="button" value="0" onclick="calc('0')" ></td> <td><input type="button" value="+" onclick="calc('+')"></td> <td colspan="2"> <input type="button" value="=" onclick="calc('=')"></td> </tr> </form> <script> function calc(a) { if (a === "=") { document.myform.kekka.value = eval(document.myform.kekka.value); } else if (a === "AC") { document.myform.kekka.value = ""; } else { document.myform.kekka.value += a; } </script> </body> </html> ですが、onclickとevalを使わず、代わりに「addEventListner」を用いるよう指示されました。 「addEventListner」に関しては、検索してなんとかざっと理解したのですが、それ以前に、電卓の基本的な関数の組み方を理解していないため、いまいちどこから手をつけたらいいかわかりません。 いろんなサイトを見ているといろんなやり方がでてきますが、ope=+,やflag=0などの表記をよく見かけます。が、この意味もいまいちわかっていません。。 初心者すぎるので、何かアドバイスをいただけますと幸いです。 宜しくお願いいたします。 また、このような初心者が使いこなせるようになるために向いている動画や書籍、ページがありましたら教えていただけますと助かります。

  • JavaScriptで電卓を作って一応完成はした

    のですが、分からないコードがあります。以下のコードです。 ~HTML~ <form name="dentaku"> <input type="text" name="line" value="0"> <input type="button" value="C" onclick="cl()"> <input type="button" value=" 7 " onclick="val(7)"> <input type="button" value=" 8 " onclick="val(8)"> <input type="button" value=" 9 " onclick="val(9)"> <input type="button" value="÷" onclick="keisan('/')"> <input type="button" value=" 4 " onclick="val(4)"> <input type="button" value=" 5 " onclick="val(5)"> <input type="button" value=" 6 " onclick="val(6)"> <input type="button" value="×" onclick="keisan('*')"> <input type="button" value=" 1 " onclick="val(1)"> <input type="button" value=" 2 " onclick="val(2)"> <input type="button" value=" 3 " onclick="val(3)"> <input type="button" value="-" onclick="keisan('-')"> <input type="button" value=" 0 " onclick="val(0)"> <input type="button" value=" ・ " onclick="val('.')"> <input type="button" value=" + " onclick="keisan('+')"> <input type="button" value="=" onclick="keisan('=')"> </form> ~JavaScript~ total = 0; input = ""; ope = "+"; flg = 1; function val(data) { flg = 0; input += data; document.dentaku.line.value = input; } function keisan(data) { if (flg == 0) { flg = 1; cf = total + ope + input; total = eval(cf); input = ""; document.dentaku.line.value = total; } if (data == "=") { total = 0; ope = "+"; } else { ope = data; } } function cl() { total = 0; ope = "+"; input = ""; document.dentaku.line.value = total; } 関係のないコードは省略してあります。また、CSSも省略しますが、テーブル要素を使わず以下の画像のようにインライン要素(input要素)の性質を利用して回り込みをさせています。 長くなりましたが、そこで質問なのですが、 (1)変数ope(operandの略)なのですが、初期値は+なのに演算子ボタン(上記のHTMLコード)をクリックすると、なぜ値がその演算子に変わるのか理由を教えて下さい。 何となく理由は分かりますが、はっきりと理解したいです。 (2)上記のHTMLコードをもっと簡単に書けませんか? 特にonclickをボタンの数だけ書くのは手間です。

  • javascriptのonclickに関数を追加?

    現在、javascriptでinput要素に新しくonclick='hoge()'などの関数を追加したいのですができません。 色々調べたのですが、結局わからなかったので質問させていただきます。 何卒、ご教授宜しくお願いします。 ■やろうとしていること 下記ソースのボタンをどれかクリックしたら、 新しく、<input type="button" value="次へ" onclick="next()" />というのを<span>に 生成したいのですが、onclickが追加されずに困っております。 どのようにしたらよいのでしょうか?ちなみにtypeとvalueは生成されています。 <form name="test"> <input type="button" value="" id="answer_0" onclick="test(0)" /> <input type="button" value="" id="answer_1" onclick="test(1)" /> <input type="button" value="" id="answer_2" onclick="test(2)" /> </form> <span id="test2"></span> <script> function test(n) { ・・・ 中略 var nq = document.createElement('input'); nq.type = "button"; nq.value = '次へ'; nq.onclick = "next()"; document.getElementById('test2').appendChild(nq); } </script> 以上、宜しくお願い申し上げます。

  • 名無しformの操作

    以下のような、元々名前のないformが複数ある場合にボタンイベントで発生した共通のtest()関数内で処理を行う場合、どのフォームか識別できる方法はあるのでしょうか? テスト1、をクリックした場合、テスト1のフォームの操作を行いたいです。 <script ....... function test(???) { document.どのフォームかわからない.action="/index.cgi"; document.どのフォームかわからない.a.value="1"; document.どのフォームかわからない.submit(); } </script> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト1" onclick="javascript:test(???)"> </form> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト2" onclick="javascript:test(???)"> </form> <form> <input type="hidden" name="a" value=""> <input type="button" value="テスト3" onclick="javascript:test(???)"> </form>

  • IEでのフォームメールで、ENTERキーでのsubmitを動かさないようにしたいのですが。。

    IEでフォームメールを使用したときにENTERキーを押下するとsubmitが動いてしまうのですが、その動きを止める為に 1.送信ボタンは   <input type="button" name="submit" value=" 送信する " onClick="subm()"> で関数subm()で function subm() { document.form1.submit(); } という動きと 2.送信ボタンに<input type="button" name="submit" value=" 送信する " onClick="javascript:document.form1.submit()"> という動きの2つを試してみたのですが、どちらもエラーになってしまいました。 原因がわからないので調べているところですが、もしどなたか他の方法をご存知でしたら、教えていただけませんでしょうか?

  • javascript 乱数が取得できない

    はじめまして。 一月ほど前から「パズルネット ソフィア」 http://www.pori2.net/js/number/4.html というサイトでjavascriptの基礎を学んでいるのですが、乱数 を扱う段階になって自分の作成したプログラム(以下) <html> <head> </head> <body onload="Mondai()"> <form name="quiz"> <input type="text" value="" > <input type="button" value="赤" onclick="Push(0)"> <input type="button" value="青" onclick="Push(1)"> <input type="button" value="黄" onclick="Push(2)"> <input type="button" value="緑" onclick="Push(3)"> <input type="button" value="白" onclick="Push(4)"> </form> <script type="text/javascript"> <!-- var col=new Array("red","bleu","yellow","green","white"); var Rnd; function Mondai(){ Rnd=Math.floor(Math.random() * 5 ); document.quiz.element[0].value=col[Rnd]; } function Push(num){ var n=parseInt(num); if( n==Rnd ){ Mondai(); }else{ alert("違います。"); } } // --></script> </body> </html> を実行してもテキストボックス内に何の値も表示されず 、ボタンを押しても「違います。」とだけしか出てきません。 ブラウザはfirefoxを使用しており、javascriptの設定もonに なっています。 カンマや鍵括弧などの記号にも打ち間違いがないかサンプル プログラムを参考にしながら確認してみたのですが、どこにも おかしな点はありませんでした。 サンプルプログラムは下記のとおりで、こちらは正常に実行されます。 <body onload="Mondai()"> <form name="quiz"> <input type="text" value=""> <input type="button" value="赤" onclick="Push(0)"> <input type="button" value="青" onclick="Push(1)"> <input type="button" value="黄" onclick="Push(2)"> <input type="button" value="緑" onclick="Push(3)"> <input type="button" value="白" onclick="Push(4)"> </form> <script type="text/javascript"> <!-- //色名の英単語を配列に入れる var col=new Array("red","blue","yellow","green","white"); //乱数を入れる変数 var Rnd; //テキストボックスに問題文(色名)を表示する関数 function Mondai(){ //0~4までの乱数を発生させる Rnd=Math.floor( Math.random() * 5 ); document.quiz.elements[0].value=col[Rnd]; } //正誤判定関数 function Push(num){ //引数を数字に変換 var n=parseInt(num); //正解なら次の問題を表示、間違っていたらアラートを表示する if ( n == Rnd ){ Mondai(); }else{ alert("違います!"); } } // --> </script> どなたかアドバイスをいただけないでしょうか? よろしくお願いします。

  • IE6.0でJavaScriptを無効にできない

    IE6.0でJavaScriptを無効にできません。 「ツール」→「インターネットオプション」→「セキュリティー・タブ」→「既定のレベル」→「高」 これでJavaScriptが無効になると思ってたのですが、 例えば以下のようなサンプルをIEで開くと、ちゃんとJavaScriptが動作して、アラートが表示されるのです。 レベルの設定は、念のため、インターネット、イントラネット・・・4つのゾーン全てにレベル高を設定しました。 <html> <input type="button" onClick="alert('テスト')" value="テスト"> </html> JavaScriptを無効にする方法を教えてください。

  • Javascriptを短くしたい

    初歩的なことですみません。 Javascriptで表示/非表示を切り替えるものを作ろうと思うのですが、 以下のサンプル文のような形では、項目数が増えるとその分だけ どんどんJavascriptも長くなっていってしまいます。 Javascript文を簡潔にするには、どのように記述すればよいのでしょうか。 よろしくお願いします。 <script type="text/javascript"> <!-- function Hyo1(num) { if (num == 0) { document.getElementById("cont1").style.display="block"; } else { document.getElementById("cont1").style.display="none"; } } function Hyo2(num) { if (num == 0) { document.getElementById("cont2").style.display="block"; } else { document.getElementById("cont2").style.display="none"; } } // --> </script> <div id="cont1">ああああああ</div> <form> <input type="button" value="表示" onclick="Hyo1(0)"> <input type="button" value="非表示" onclick="Hyo1(1)"> </form> <form> <div id="cont2">いいいいいい</div> <input type="button" value="表示" onclick="Hyo2(0)"> <input type="button" value="非表示" onclick="Hyo2(1)"> </form>