applet与javascript交互

来源:互联网 发布:yum安装nginx lua 编辑:程序博客网 时间:2024/04/27 20:12
如果您需要在 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("表达式") 
原创粉丝点击