###############Java 中使用 JavaScript 对象######################
必须引入 netscape.javascript 包,其定义如下:
netscape.javascript.JSObject 允许 Java 代码访问 JavaScript 方法和属性;
netscape.javascript.JSException 允许 Java 代码处理 JavaScript 异常;
netscape.plugin.Plugin 允许客户端 JavaScript 和 applets 操作一个插件(plug-in)。
包在jre\lib\plugin.jar里
用 JSObject 访问 JavaScript
用 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_r("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_r("document.testForm")
}
您也可以用下面的语句来代替 myForm=win.eval_r("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_r("表达式")
###############JavaScript 中使用 Applet对象######################
<applet id = "" codebase = "." archive = "twaver.jar" code = "demo.MainFrame" width = "100%" height = "75%" align= "middle" MAYSCRIPT>
</applet>
...
<SCRIPT LANGUAGE="JavaScript">
<!--
function openURL(name){
alert("hello");
}
//Javascript operates the function 'createServer' in Applet
function createServer(name){
document.applets[0].createServer('A B C');
}
//-->
</SCRIPT>
------------------------------------------------------
import netscape.javascript.*;
...
public class MainFrame extends JApplet
{
...
//Applet operates the function 'openURL' in Javascript
private void openURL(String name){
JSObject window = JSObject.getWindow(this);
String code = "openURL(\""
+ name + "\");";
window.eval_r(code);
}
public void createServer(String name){
Node server = new Node();
server.setName(name);
box.addElement(server);
}
...
}