アプレットからのJavaScript実行

JSObjectを使ったアプレットからJavaScriptを実行するサンプルです。

Home > サンプル集 > アプレットサンプル集 > アプレットからのJavaScript実行


アプレットからのJavaScript実行

このページには、以下のサンプルを掲載しています。 下の項目をクリックをすると各サンプルにジャンプします。 ※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
  1. アプレットからのJavaScript実行  
  2. アプレットからのJavaScript実行(引数あり)  

■アプレットからのJavaScript実行

[ サンプルプログラムのソースコード - Applet2JavaScript01.java - ]
アプレットのソースコードになります。このプログラムから後述のscriptsample01.htmlに記述された JavaScriptのFunctionを呼び出しています。
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.JApplet;
  4. import javax.swing.JButton;
  5. import netscape.javascript.JSObject;
  6. public class Applet2JavaScript01 extends JApplet implements ActionListener {
  7.   private static final long serialVersionUID = 1L;
  8.   private JButton button = new JButton("JavaScriptの実行");
  9.   private JSObject win;
  10.   public void init(){
  11.     win = (JSObject) JSObject.getWindow(this);
  12.     add(button);
  13.     button.addActionListener(this);
  14.   }
  15. f
  16.   public void actionPerformed(ActionEvent event) {
  17.     if ( event.getSource() == button ) {
  18.       win.call("testFunc",null);
  19.     }
  20.   }
  21. }

[ サンプルプログラムのソースコード - scriptsample01.html - ]
appletタグの他にappletから呼び出すJavaScriptのFunction定義もこのHTML内に記述します。 もちろんJavaScriptを別ファイルで記述してこのHTMLファイルにインクルードしても結果は同じです。
  1. <html>
  2.   <head>
  3.     <title>Javaサンプル集-アプレット編 TextFieldSample01.java</title>
  4.   </head>
  5.   <script language="JavaScript">
  6.     <!--
  7.       function testFunc() {
  8.         alert("TEST....");
  9.       }
  10.     // -->
  11.   </script>
  12.   <body>
  13.     <applet
  14.         code="sample.applet.javascript.Applet2JavaScript01.class"
  15.         archive="ScriptSample.jar"
  16.         width="200"
  17.         height="60"
  18.         alt="Javaアプレット JavaScript連携サンプル1"
  19.         MAYSCRIPT>
  20.     </applet>
  21.   </body>
  22. </html>
[ サンプルプログラムの実行 ]
サンプルプログラムを実行してみる場合は、下のボタンをクリックしてください。
JavaScriptの実行と書かれたボタンを押すとJavaScriptのアラートダイアログを表示します。
※サンプルプログラムは、別ウィンドウで実行されます。実行には時間がかかることがありますのでご注意ください。


[ サンプルプログラムの解説 ]
アプレットからJavaScriptを実行するには、netscape.javascript.JSObjectを使います。netscape.javascript.JSObjectは、plugin.jarの中に含まれていますので コンパイル時にplugin.jarへのクラスパスを通しておく必要があります。JSObjectを利用するには、最初にJSObject.getWindow(applet)で JSObjectのインスタンスを取得します。(18行目)getWindowの引数には、appletクラスのインスタンスを渡します。このサンプルでは、自分自身(this)を 渡しています。取得したJSObjectのインスタンスからJSObject#call("JavaScript FunctionName",args[])でJavaScriptを実行します。(27行目) 第一引数にJavaScriptのFunction名を渡します。第2引数にJavaScriptのFunctionに渡す引数を配列で渡します。サンプルでは、testFuncというJavaScriptに記述したFunctionを引数なしで実行しています。



■アプレットからのJavaScript実行(引数あり)

[ サンプルプログラムのソースコード - Applet2JavaScript02.java - ]
アプレットのソースコードになります。このプログラムからJavaScriptのalert関数を呼び出しています。
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.JApplet;
  4. import javax.swing.JTextField;
  5. import netscape.javascript.JSObject;
  6. public class Applet2JavaScript02 extends JApplet implements ActionListener {
  7.   private static final long serialVersionUID = 1L;
  8.   private JTextField text = new JTextField();
  9.   private JSObject win;
  10.   public void init(){
  11.     win = (JSObject) JSObject.getWindow(this);
  12.     add(text);
  13.     text.addActionListener(this);
  14.   }
  15.   public void actionPerformed(ActionEvent event) {
  16.     if ( event.getSource() == text ) {
  17.       win.call("alert",new String[]{text.getText()});
  18.     }
  19.   }
  20. }

[ サンプルプログラムのソースコード - scriptsample02.html - ]
  1. <html>
  2.   <head>
  3.     <title>Javaサンプル集-アプレット編 TextFieldSample02.java</title>
  4.   </head>
  5.   <script language="JavaScript">
  6.     <!--
  7.       function testFunc() {
  8.         alert("TEST....");
  9.       }
  10.     // -->
  11.   </script>
  12.   <body>
  13.     <applet
  14.         code="sample.applet.javascript.Applet2JavaScript02.class"
  15.         archive="ScriptSample.jar"
  16.         width="200"
  17.         height="60"
  18.         alt="Javaアプレット JavaScript連携サンプル2"
  19.         MAYSCRIPT>
  20.     </applet>
  21.   </body>
  22. </html>
[ サンプルプログラムの実行 ]
サンプルプログラムを実行してみる場合は、下のボタンをクリックしてください。
テキストフィールドに何か文字列を入力してリターンキーを押すと入力した文字列がJavaScriptの警告 ダイアログに表示されます。
※サンプルプログラムは、別ウィンドウで実行されます。実行には時間がかかることがありますのでご注意ください。


[ サンプルプログラムの解説 ]
Applet2JavaScript01.javaでは、引数なしでJavaScriptの関数を呼んでいましたが、このサンプルでは、引数を指定しての呼び出しです。 もちろん引数を渡すには、JavaScript側の呼び出し関数が引数を受け取るようになっていないとだめです。 JSObjectのインスタンスからJSObject#call("JavaScript FunctionName",args[])でJavaScriptを実行するときに callメソッドの第2引数にJavaScriptのFunctionに渡す引数を配列で渡します。サンプルでは、alert関数にテキストフィールドに 入力した文字列を渡しています。






最終更新日:2019/02/13

2015-03-01からの訪問者数
  2410 人