java 中使用javascript_转载:在Java中使用JavaScript

如果您需要在 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— 通过在 标记中指定 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("表达式")

61497_1367853_1.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值