applet与js交互
时间:2010-09-09 来源:疯狂骇客
1.js访问applet:
<applet name="appletName" ....../>
//JavaScript访问Applet属性
- js访问applet属性:document.appletName.appletField (属性必须是public的)
- js访问Applet方法:document.appletName.appletMethod (方法必须是public的)
如页面:
<script> function showLable{ document.applets["TestApplet"].showLable('dd()'); } </script> <applet codebase = "." code = "untitled2.Applet1.class" name = "TestApplet" width = "400" height = "300" hspace = "0" vspace = "0" align = "middle" MAYSCRIPT > </applet> <a href="#" onclick="showLable()">showLable</a>
untitled2.Applet1类:
public void showLable(String str) { this.jLabel1.setText(str); }
2.applet访问js:
java类中:
import netscape.javascript.JSObject;//引用 import netscape.javascript.JSException; //可允许在小程序中处理异常事件
//所对应方法
JSObject window=JSObject.getWindow(this); // 获取JavaScript窗口句柄,引用当前文档窗口 JSObject doc=(JSObject)window.getMember("document"); // 访问JavaScript document对象 JSObject form=(JSObject)doc.getMember("textForm"); //访问JavaScript form对象 JSObject textField=(JSObject)form.getMember("textField");访问JavaScript text对象 String text=(String) textField.getMember("value"); //获取文本区的值 // 调用JavaScript的alert()方法 window.eval("alert(\"This alert comes from Java!\")"); // 调用JavaScript的myFunction(message)方法 window.call("myFunction", new Object[]{"Hello"});//参数用数组的形势表示。
注意:
- 必须在<applet/>标记中加入MAYSCRIPT才能够调用JSObject对象,不然会抛出JSException异常
- netscape.javascript.JSObject 这个类所对应的在包在 Java\jdk1.6.0_05\jre\lib\plugin.jar,由于这个jar有1MB多,使用的话,客户端会将整个包下载到客户端,这样就话,第一次打开网页就会很慢,因,如果只是简单的用netscape.javascript.JSObject类的话,可以将其所需要的class提取出来,减轻容量。
- 当js调用applet的方法读取本地文件信息的时候,请注意,如果要返回值的话,本人这边还真没有方法,因为这里要关系到安全问题,如果不要返回值的话,如果参考http://layicr.blog.sohu.com/141676490.html
相关阅读 更多 +