applet與javascript互動
最後更新:2018-12-03
來源:互聯網
上載者: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("運算式")