javascript与applet之间相互通讯

http://robertleepeak.blog.51cto.com/917130/197289

avascript与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.      }      
}     
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>      


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值