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>      
相關文章
相關標籤/搜索