打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Call Javascript from a Java applet - Real‘s Java How-to

Call Javascript from a Java applet

Netscape only, using the javascript: protocol
A Javascript function is called from Java by using the showDocument method.A URL is needed with "javascript:" as the protocol.

[Java applet]

import java.applet.*;import java.net.*;public class InJava4 extends Applet{public void init(){String msg = "Hello from Java (using javascript alert)";try {getAppletContext().showDocument(new URL("javascript:doAlert(\"" + msg +"\")"));}catch (MalformedURLException me) { }}}

[Javascript and HTML]

<HTML><HEAD></HEAD><BODY><SCRIPT>function doAlert(s) {alert(s);}</SCRIPT><APPLET CODE="InJava4.class"NAME="myApplet"  MAYSCRIPTHEIGHT=10 WIDTH=10></APPLET></BODY></HTML>
Try it here

Netscape and IE ok, using the netscape.javascript.JSObject package

How to compile when using the netscape.javascript.JSObject package ?

For Java 1.4.2 and later: add plugin.jar to your classpath.It can be found in the lib directory of your JRE installation, e.g.C:\Program Files\Java\jre1.5.0\lib\plugin.jar

For Java 1.4.0/1.4.1: use jaws.jar (same directory).

In the following example, you type in the TextField a Javascriptfunction and press the button toexecute the function. For example, try alert(‘Hello from JAVA‘).Or you can execute functiondefined on the same page as the Applet. The Applet must contains theMAYSCRIPT parameter to be able to use JSObject.

Netscape and IE Ok.

import java.applet.*;import java.awt.*;import java.awt.event.*;import netscape.javascript.*;public class InJava5 extends Applet implements ActionListener {Button b;TextField t;public void init() {t = new TextField(20);add(t);b = new Button("execute Javascript");add(b);b.addActionListener(this);}public void actionPerformed(ActionEvent ae) {if (ae.getSource() == b) {JSObject win = (JSObject) JSObject.getWindow(this);win.eval(t.getText());}}}
Try it here

Another way is to use the Reflection API. That way you don‘t need tomodify your CLASSPATH for compilation or even import thenetscape.jsobject package.

// posted by C Werner on the realhowto listimport java.lang.reflect.*;...// Somewhere in the applet class ......String jscmd = "window.close()";  /* JavaScript command */String jsresult = null;boolean success = false;try {Method getw = null, eval = null;Object jswin = null;Class c =Class.forName("netscape.javascript.JSObject"); /* does it in IE too */Method ms[] = c.getMethods();for (int i = 0; i < ms.length; i++) {if (ms[i].getName().compareTo("getWindow") == 0)getw = ms[i];else if (ms[i].getName().compareTo("eval") == 0)eval = ms[i];}}Object a[] = new Object[1];a[0] = this;               /* this is the applet */jswin = getw.invoke(c, a); /* this yields the JSObject */a[0] = jscmd;Object result = eval.invoke(jswin, a);if (result instanceof String)jsresult = (String) result;elsejsresult = result.toString();success = true;}catch (InvocationTargetException ite) {jsresult = "" + ite.getTargetException();}catch (Exception e) {jsresult = "" + e;}if (success)System.out.println("eval succeeded, result is " + jsresult);elseSystem.out.println("eval failed with error " + jsresult);
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
转载:在Java中使用JavaScript
用推送技术动态更新页面内容
在JavaScript中使用Java
用Java实现FTP批量大文件上传下载(四)
Applet调用JavaScript函数
Java 与 JavaScript 有什么不同 (转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服