javascript与applet之间相互通信

javascript applet 之间可以相互通信给咱们带来了不少方便, Java JavaScript 互相补充,以开发功能更完美的 Web 应用程序。 B/S 下可以充分利用 java 的优点,给咱们带来更多的网络体验, 方便用户。我用的比较多的是利用 Swing 组件开发的应用程序利用 applet 实现 B/S 下架构, 这样可以充分显示 Swing 组件的优点,便于系统升级,便于维护;还有就是在 WEB 下,有时客户端要使用本地的硬件资源,我所知道的是经过 applet 来实现,经过 applet 去调用 javaAPI jni,javacomm20-win32 【详见 http://www.javaeye.com/topic/64859 ) 来实现。不知道有没有相似 applet 的实现方式,我想应该有的。咱们具体来看看 javascript applet 之间究竟是怎样通信的呢?
 
1.JavaScript 访问 Applet
Test.java
Java 代码
1.       import    java.awt.*;      
2.       import    java.applet.*;      
3.            
4.            
5.       public    class   Test   extends   Applet   {      
6.            
7.         public   void   init()   {      
8.            
9.         }      
10.         
11.      public   void   paint(Graphics   g)   {      
12.        g.drawString("Welcome   to   Java!!",   50,   60   );      
13.      }      
14.         
15.      public   void   win()   {      
16.        Frame   fr   =   new   Frame("good");      
17.        fr.setSize(300,300);      
18.        fr.setVisible(true);      
19.      }      
20.  }     
Test.html  
Html 代码
1.       < HTML >       
2.         <HEAD>      
3.         </HEAD>      
4.         <BODY   BGCOLOR="000000">      
5.           <CENTER>      
6.             <APPLET id="my" name="my" code="Test.class" width="500" height="300">      
7.             </APPLET>        
8.             <input   type="submit"   name="Submit"   value="Submit"   onClick="kc()">      
9.           </CENTER>      
10.        <script   language="javascript">      
11.          function   kc()   {      
12.             document.my.win();      
13.          }      
14.        </script>      
15.      </BODY>      
16.      </HTML>   
Rules
Js 代码
1.       <applet name="appletName" ....../>      
2.         
3.       //JavaScript 访问 Applet 属性       
4.       window.document.appletName.appletField  ( 属性必须是 public ,"window.document." 也能够不写 )      
5.       /JavaScript 访问 Applet 方法       
6.       window.document.appletName.appletMethod  ( 方法必须是 public ,"window.document." 也能够不写 )   
2. Applet 访问 JavaScript

Live Connect
提供了 Java JavaScript 的接口,能够容许在 Java Applet 小程序中使用 JavaScript 。须要用到一个 jar , C:\WINNT\java\Packages 目录下找,大概有 5M 多,其实就是打开看哪一个有 netscape.javascript.JSObject 。若是没有装个 NetScape 或从网上下均可以。能够把它重命名为 netscape.jar (不是必须的) , 必定要加入到 classpath ,目的是使开发的时候可以编译。注意:部署时不须要包括 netscape.jar 由于整个包会下载到客户端,影响速度。
 
新版本的 JRE 包括了这些类, Java\jre6\lib\plugin.jar#netscape\javascript\JSObject, 这个类应该能够用在 IE firefox 里。
 
Java 代码
1.       // 引入 netscape       
2.       import  netscape.javascript.JSObject        
3.       import  netscape.javascript.JSException  // 可容许在小程序中处理异常事件        
4.            
5.       win=JSObject.getWindow(this)  //  获取 JavaScript 窗口句柄,引用当前文档窗口        
6.       doc=(JSObject)win.getMember("document")  //  访问 JavaScript document 对象        
7.       form=(JSObject)doc.getMember("textForm")  // 访问 JavaScript form 对象        
8.       textField=(JSObject)form.getMember("textField") ;访问 JavaScript text 对象        
9.        text=(String) textField.getMember("value"); // 获取文本区的值        
10.         
11.    //  调用 JavaScript alert ()方法        
12.    win.eval("alert(\"This alert comes from Java!\")")        
13.         
14.    //  调用 JavaScript myFunction message )方法       
15.  win.call( "myFunction" new  Object[]{ "Hello" }); // 参数用数组的形势表示。      
注意: 你必须在 <applet/> 标记中加入 MAYSCRIPT 才可以调用 JSObject 对象,否则会抛出 JSException 异常 。你也没必要初始化他们,在什么地方用就在什么地方用吧。
 
3 简单的 Applet 访问 JavaScript
 
  使用 getAppletContext().showDocument(new URL("javascript:alert(1)"));  
 
Java 代码
1.       import    java.net.*;      
2.              
3.         public   class   inJava   extends   Applet{      
4.             public   void   init(){      
5.                 String   msg   =   "We   will   jump   to   an   HTML   tag";      
6.                 try   {      
7.                     getAppletContext().showDocument(new   URL("javascript:doAlert(\""   +   msg   +"\")"));      
8.                     getAppletContext().showDocument(new   URL("javascript:jumpTo(\"#JUMP\")"));      
9.                 } catch   (MalformedURLException   me)   {   }      
10.          }        
11.      }      
12.      
13.       
Html 代码
1.       < HTML >< HEAD ></ HEAD >< BODY >       
2.         <SCRIPT>      
3.           function   doAlert(s)   {      
4.               alert(s);      
5.           }      
6.           function   jumpTo(tag)   {      
7.               self.location=tag;      
8.           }      
9.         </SCRIPT>      
10.      <APPLET   CODE="inJava.class"    NAME="myApplet"  MAYSCRIPT  HEIGHT=400   WIDTH=10>   </APPLET>      
11.      <P>      
12.      <A   NAME="JUMP">jump   here   from   Java   via   Javascript</A>      
13.      </BODY></HTML>      
相关文章
相关标签/搜索