phonegap js 和 本地代碼 調用原理
iOS:通過讓本地代碼攔截JavaScript中調用的window.location=”gap://Class.method/args”命令,來實現從JavaScript到本地代碼之間的通信。在本地代碼攔截該命令后,解析獲取的參數,然后調用對應的類、方法並傳遞參數。對應的,使用UIWebView.stringByEvaluatingJavaScriptFromString來實現本地代碼調用JavaScript。
Android:通過攔截JavaScript的prompt命令實現從JavaScript到本地代碼的通信。JavaScript prompt命令默認會彈出對話框,而PhoneGap的Android本地代碼會攔截該對話框,並進一步取得JavaScript數據。相應的,Android上的PhoneGap內部,使用Java實現了一個HTTP服務器,通過持久性的XHR連接,JavaScript可以不斷輪詢內部XHR服務器存儲的信息,從而實現了從Java到JavaScript方向的通信。
BlackBerry 4.x:JavaScript與本地代碼之間的唯一通信方式是通過document.cookie實現的。JavaScript設定Cookie,本地代碼從Cookie中獲取信息。對應的,本地代碼也可以設定Cookie,允許JavaScript從Cookie中獲取本地代碼信息。
BlackBerry WebWorks:新的BlackBerry WebWorks SDK更好地支持了Java與JavaScript之間的交互通信。通過ScriptEngine.addExtension,Java對象可以被暴露給JavaScript,而對應的Java可以使用ScriptEngine.executeScript來調用JavaScript。
Windows Phone 7:在Windows Phone 7中,JavaScript通過window.external.Notify可以將信息發送給本地代碼。而相應的,WebBrowser.InvokeScript允許本地代碼調用JavaScript。
來自:http://hi.baidu.com/zymsuper/item/6fea7d10598a479c98ce332a