javascript與
applet之間能夠相互通訊給我們帶來(lái)了很多方便,Java與
JavaScript互相補(bǔ)充,以開(kāi)發(fā)功能更完美的Web應(yīng)用程序。B/S下能夠充分利用java的優(yōu)勢(shì),給我們帶來(lái)更多的網(wǎng)絡(luò)體驗(yàn), 方便用戶。我用的比較多的是利用Swing組件開(kāi)發(fā)的應(yīng)用程序利用
applet實(shí)現(xiàn)B/s下架構(gòu), 這樣能夠充分顯示Swing組件的優(yōu)勢(shì),便于系統(tǒng)升級(jí),便于維護(hù);還有就是在WEB下,有時(shí)客戶端要使用本地的硬件資源,我所知道的是通過(guò)
applet來(lái)實(shí)現(xiàn),通過(guò)
applet去調(diào)用javaAPI(jni,javacomm20-win32【詳見(jiàn)http://www.javaeye.com/topic/64859】)來(lái)實(shí)現(xiàn)。不知道有沒(méi)有類似
applet的實(shí)現(xiàn)方式,我想應(yīng)該有的。
我們具體來(lái)看看
javascript與
applet之間到底是怎樣通訊的呢?
1.
JavaScript訪問(wèn)
Applet - <applet name="appletName" ....../>
- //JavaScript訪問(wèn)Applet屬性
- window.document.appletName.appletField (屬性必須是public的,"window.document."也可以不寫(xiě))
- /JavaScript訪問(wèn)Applet方法
- window.document.appletName.appletMethod (方法必須是public的,"window.document."也可以不寫(xiě))
2.
Applet訪問(wèn)
JavaScript Live Connect提供了Java與
JavaScript的接口,可以允許在Java
Applet小程序中使用
JavaScript。需要用到一個(gè)jar包,在C:\WINNT\java\Packages目錄下找,大概有5M多, 其實(shí)就是打開(kāi)看哪個(gè)有netscape.
javascript.JSObject。如果沒(méi)有裝個(gè)NetScape或從網(wǎng)上下都可以??梢园阉孛麨閚etscape.jar(不是必須的),一定要加入到classpath,目的是使開(kāi)發(fā)的時(shí)候能夠編譯。
注意:部署時(shí)不需要包括netscape.jar,
因?yàn)檎麄€(gè)包會(huì)下載到客戶端,影響速度。 - //引入netscape類
- import netscape.javascript.JSObject;
- import netscape.javascript.JSException; //可允許在小程序中處理異常事件
-
- win=JSObject.getWindow(this); // 獲取JavaScript窗口句柄,引用當(dāng)前文檔窗口
- doc=(JSObject)win.getMember("document"); // 訪問(wèn)JavaScript document對(duì)象
- form=(JSObject)doc.getMember("textForm"); //訪問(wèn)JavaScript form對(duì)象
- textField=(JSObject)form.getMember("textField");訪問(wèn)JavaScript text對(duì)象
- text=(String) textField.getMember("value"); //獲取文本區(qū)的值
-
- // 調(diào)用JavaScript的alert()方法
- win.eval("alert(\"This alert comes from Java!\")");
-
- // 調(diào)用JavaScript的myFunction(message)方法
- win.call("myFunction", new Object[]{"Hello"});//參數(shù)用數(shù)組的形勢(shì)表示。
注意: 你必須在<applet/>標(biāo)記中加入MAYSCRIPT才能夠調(diào)用JSObject對(duì)象,不然會(huì)拋出JSException異常。你也不必初始化他們,在什么地方用就在什么地方用吧。