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>