??????????????????????????????????????????? javascript與applet之間相互通訊
???????? 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
?? ?<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多,
???? 其實就是打開看哪個有netscape.javascript.JSObject。如果沒有裝個NetScape或從網上下都可以。
???? 可以把它重命名為netscape.jar(不是必須的),一定要加入到classpath,目的是使開發的時候能夠編譯。
???? 特別注意的是:部署時不需要包括netscape.jar,因為整個包會下載到客戶端,影響速度。
?????
?????//引入netscape類
??? import netscape.javascript.JSObject;
??? import netscape.javascript.JSException; //可允許在小程序中處理異常事件
??? win=JSObject.getWindow(this); // 獲取JavaScript窗口句柄,引用當前文檔窗口
??? 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"); //獲取文本區的值
???
??? // 調用JavaScript的alert()方法
??? win.eval("alert(\"This alert comes from Java!\")");
???
??? // 調用JavaScript的myFunction(message)方法
??? win.call("myFunction", new Object[]{"Hello"});//參數用數組的形勢表示。
注意:
你必須在<applet/>標記中加入MAYSCRIPT才能夠調用JSObject對象,不然會拋出JSException
異常。你也不必初始化他們,在什么地方用就在什么地方用吧。
???