javascript
与
applet
之间可以相互通信给咱们带来了不少方便,
Java
与
JavaScript
互相补充,以开发功能更完美的
Web
应用程序。
B/S
下可以充分利用
java
的优点,给咱们带来更多的网络体验,
方便用户。我用的比较多的是利用
Swing
组件开发的应用程序利用
applet
实现
B/S
下架构,
这样可以充分显示
Swing
组件的优点,便于系统升级,便于维护;还有就是在
WEB
下,有时客户端要使用本地的硬件资源,我所知道的是经过
applet
来实现,经过
applet
去调用
javaAPI
(
jni,javacomm20-win32
【详见
http://www.javaeye.com/topic/64859
】
)
来实现。不知道有没有相似
applet
的实现方式,我想应该有的。咱们具体来看看
javascript
与
applet
之间究竟是怎样通信的呢?
1.JavaScript
访问
Applet
Test.java
Java
代码
1.
import
java.awt.*;
2.
import
java.applet.*;
3.
4.
5.
public
class Test extends Applet {
6.
7.
public void init() {
8.
9.
}
10.
11.
public void paint(Graphics g) {
12.
g.drawString("Welcome to Java!!", 50, 60 );
13.
}
14.
15.
public void win() {
16.
Frame fr = new Frame("good");
17.
fr.setSize(300,300);
18.
fr.setVisible(true);
19.
}
20.
}
Test.html
1.
<
HTML
>
2.
<HEAD>
3.
</HEAD>
4.
<BODY BGCOLOR="000000">
5.
<CENTER>
6.
<APPLET id="my" name="my" code="Test.class" width="500" height="300">
7.
</APPLET>
8.
<input type="submit" name="Submit" value="Submit" onClick="kc()">
9.
</CENTER>
10.
<script language="javascript">
11.
function kc() {
12.
document.my.win();
13.
}
14.
</script>
15.
</BODY>
16.
</HTML>
Rules
Js
代码
1.
<applet name="appletName" ....../>
2.
3.
4.
window.document.appletName.appletField (
属性必须是
public
的
,"window.document."
也能够不写
)
5.
/JavaScript
访问
Applet
方法
6.
window.document.appletName.appletMethod (
方法必须是
public
的
,"window.document."
也能够不写
)
2. Applet
访问
JavaScript
Live Connect
提供了
Java
与
JavaScript
的接口,能够容许在
Java Applet
小程序中使用
JavaScript
。须要用到一个
jar
包
,
在
C:\WINNT\java\Packages
目录下找,大概有
5M
多,其实就是打开看哪一个有
netscape.javascript.JSObject
。若是没有装个
NetScape
或从网上下均可以。能够把它重命名为
netscape.jar
(不是必须的)
,
必定要加入到
classpath
,目的是使开发的时候可以编译。注意:部署时不须要包括
netscape.jar
,由于整个包会下载到客户端,影响速度。
新版本的
JRE
包括了这些类,
Java\jre6\lib\plugin.jar#netscape\javascript\JSObject,
这个类应该能够用在
IE
和
firefox
里。
Java
代码
1.
2.
import
netscape.javascript.JSObject
;
3.
import
netscape.javascript.JSException
;
4.
5.
win=JSObject.getWindow(this)
;
6.
doc=(JSObject)win.getMember("document")
;
7.
form=(JSObject)doc.getMember("textForm")
;
8.
textField=(JSObject)form.getMember("textField")
;访问
JavaScript text
对象
9.
text=(String) textField.getMember("value");
10.
11.
12.
win.eval("alert(\"This alert comes from Java!\")")
;
13.
14.
15.
win.call(
"myFunction"
,
new
Object[]{
"Hello"
});
注意:
你必须在
<applet/>
标记中加入
MAYSCRIPT
才可以调用
JSObject
对象,否则会抛出
JSException
异常
。你也没必要初始化他们,在什么地方用就在什么地方用吧。
3
简单的
Applet
访问
JavaScript
使用
getAppletContext().showDocument(new URL("javascript:alert(1)"));
Java
代码
1.
import
java.net.*;
2.
3.
public class inJava extends Applet{
4.
public void init(){
5.
String msg = "We will jump to an HTML tag";
6.
try {
7.
getAppletContext().showDocument(new URL("javascript:doAlert(\"" + msg +"\")"));
8.
getAppletContext().showDocument(new URL("javascript:jumpTo(\"#JUMP\")"));
9.
} catch (MalformedURLException me) { }
10.
}
11.
}
12.
13.
Html
代码
1.
<
HTML
><
HEAD
></
HEAD
><
BODY
>
2.
<SCRIPT>
3.
function doAlert(s) {
4.
alert(s);
5.
}
6.
function jumpTo(tag) {
7.
self.location=tag;
8.
}
9.
</SCRIPT>
10.
<APPLET CODE="inJava.class" NAME="myApplet" MAYSCRIPT HEIGHT=400 WIDTH=10> </APPLET>
11.
<P>
12.
<A NAME="JUMP">jump here from Java via Javascript</A>
13.
</BODY></HTML>