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