applet與javascript互動

來源:互聯網
上載者:User
如果您需要在 Java 中使用 JavaScript 對象,您必須在您的 Java 檔案中引 
入 netscape.javascript 包,其定義如下:  
 
netscape.javascript.JSObject 允許 Java 代碼訪問 JavaScript 方法和屬性; 
  
netscape.javascript.JSException 允許 Java 代碼處理 JavaScript 異常;  
netscape.plugin.Plugin 允許用戶端 JavaScript 和 applets 操作一個外掛程式( 
plug-in)。  
  從 JavaScript 1.2 開始,這些類被遞交到一個尾碼為 .jar 的檔案,而這以 
前的 JavaScript 版本,這些類被遞交到一個尾碼為 .zip 的檔案。為了訪問  
LiveConnect 類,您可以有兩種方法將 .jar 或 .zip 檔案置於 JDK 編譯器的  
CLASSPATH 中: 
 
建立一個 CLASSPATH 環境變數以指定這些檔案的路徑和名稱;  
當您用 -classpath 命令列參數編譯時間指定這些檔案的位置。  
用 JSObject 訪問 JavaScript 
  假設您有一個名為 JavaDog 的 Java 類,JavaDog 建構函式設定了  
JavaScript 對象 jsDog,它被定義為 JSObject 類型,其代碼如下: 
 
import netscape.javascript.*; 
public class JavaDog{ 
 public String dogBreed; 
 public String dogColor; 
 public String dogSex; 
 // define the class constructor 
 public JavaDog(JSObject jsDog) { 
  // use try...catch to handle JSExceptions here 
  this.dogBreed = (String)jsDog.getMember("breed"); 
  this.dogColor = (String)jsDog.getMember("color"); 
  this.dogSex = (String)jsDog.getMember("sex"); 
  } 

 
  現在來看看如何用 Java 來訪問用戶端 JavaScript,然而 HTML 頁必須允許 
一個 Java applet 訪問 JavaScript— 通過在 <APPLET> 標記中指定  
MAYSCRIPT 屬性。當您在 Navigator 中訪問 JavaScript 之前,您必須獲得  
Navigator 視窗的控制代碼,您可以在 netscape.javascript.JSObject 類中使用的  
getWindow 方法來達到這個目的。例如,如果先前定義了一個 JSObject 類的變數 
 win,下面的代碼將視窗控制代碼賦予 win: 
 
public class myApplet extends Applet { 
 public void init() { 
 JSObject win = JSObject.getWindow(this); 
 } 

 
在 Java 中處理 JavaScript 的異常 
  當從 Java 中調用的 JavaScript 代碼發生了運行時的錯誤,它就會發出一個 
異常,這時您可以用 try...catch 語句來捕獲該異常。例如: 
 
try { 
 global.eval("foo.bar = 999;"); 
} catch (Exception e) { 
 if (e instanceof JSException) { 
  jsCodeFailed()"; 
 } else { 
  otherCodeFailed();  
  } 

 
訪問 JavaScript 的對象和屬性 
  我們用 getMember 方法來訪問 JavaScript 的對象和屬性,例如下面的代碼 
允許您通過變數 myForm 來訪問 JavaScript 對象 document.testForm: 
 
public void init() { 
 win = JSObject.getWindow(this); 
 myForm=win.eval("document.testForm") 

 
您也可以用下面的語句來代替 myForm=win.eval("document.testForm"): 
 
JSObject doc = (JSObject) win.getMember("document"); 
JSObject myForm = (JSObject) doc.getMember("testForm"); 
 
如果 JavaScript 對象 document.testForm.jazz 是一個 checkbox,下面的語句 
允許您訪問它的 checked 屬性: 
 
public void init() { 
 win = JSObject.getWindow(this); 
 JSObject doc = (JSObject) win.getMember("document"); 
 JSObject myForm = (JSObject) doc.getMember("testForm"); 
 JSObject check = (JSObject) myForm.getMember("jazz"); 
 Boolean isChecked = (Boolean) check.getMember("checked"); 

 
訪問 JavaScript 方法 
  在 netscape.javascript.JSObject 類中的方法可以讓您求出任一  
JavaScript 運算式,先用 getWindow 來獲得 JavaScript 視窗的控制代碼,然後再用 
 eval 來訪問一個 JavaScript 方法,如下: 
 
JSObject.getWindow().eval("運算式") 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.