比如说我有一个数据希望要打印到文本里。applet 直接操作文本是很麻烦的,因为涉及到applet 本身的权限安全,只能通过 url 对象来连接文本文件。
我这里想了一个取巧的方法。
首先要找到那个传说中,可以从 applet 调用网页内javascript 对象的 netscape.javascript.JSObject 类。
那些网上一大抄的文章里,都会夸夸其谈如何使用这个类,却根本不说这个类可以从哪里找到。我当初就是大费周章,因为有介绍说这个是netscape 浏览器附带的东西,我还特意去安装了网景浏览器,没找到。最后是在ms 的java 虚拟机里寻到的。
但是ms 的java 虚拟机好象停止下载了。可以去163 的聊天室帮助里下这个东西。
不知道现在这个连接还有没有效。
安装以后,在classpath 路径的设置里面,把安装目录Java/Packages/下面的若干.zip 文件都包含进来,就可以使用netscape.javascript.JSObject
下面具体讲这个调试方法
举例:
applet 文件 a.class
包含网页 a.htm
在a.htm 的代码里写上
<APPLET height=100 width=100 code=a.class></APPLET>
<form name="dataform">
<input name="a" type=hidden>
<form>
<form name="dataform">
<input name="a" type=hidden>
<form>
<SCRIPT language=javascript>
<!--
function pri() {
document.write(window.dataform.a.value);
}
//-->
</SCRIPT>
<!--
function pri() {
document.write(window.dataform.a.value);
}
//-->
</SCRIPT>
在a.class 里面加入如下代码
String debugInfo="look here";
//然后在某个触发方法里加入如下代码
try {
JSObject.getWindow(this).eval("javascript:dataform.a.value='"+debugInfo+"'");
JSObject.getWindow(this).eval("javascript:pri();");
} catch (Exception e) {}
JSObject.getWindow(this).eval("javascript:dataform.a.value='"+debugInfo+"'");
JSObject.getWindow(this).eval("javascript:pri();");
} catch (Exception e) {}
剩下的就不用说明了吧
在applet 里面触发某一事件,在网页里就会打印出调试信息
恩,恩,适用于某些特殊场合