在运行时,PhoneGap 通过在设备上实例化浏览器组件来工作。这是一个无铬浏览器,这意味着它没有地址栏或前进/后退按钮。最终开发人员的应用程序由加载到浏览器组件中的 HTML、JavaScript 和 CSS 组成。PhoneGap 提供了一个 JavaScript API,允许开发人员代码访问设备功能,目前默认浏览器中加载的网站无法访问该功能。PhoneGap 使用的 Web 视图与本机操作系统使用的 Web 视图相同。在 iOS 上,这是 Objective-C UIWebView 类;在 Android 上,这是 android.webkit.WebView。
显示 Web 组件的想法是从 Web 视图开始的!这个 webview 应该能够加载 HTML(本地或远程),并运行 Javascript 和 CSS。所有主要的智能手机都带有一个 XYZWebView,你唯一需要注意的是它们之间的 HTML/CSS 支持(减少)差距。
下一步是允许该 web 视图中的 Javascript 代码调用您的本机代码,反之亦然。所有平台都可以做到这一点,但不幸的是,它们的做法都不同。
Android - Java objects are marshalled into the webview, and native methods can be called directly.
iOS - Javascript needs to make a call to a URL with a custom scheme (think native://mycall), which is intercepted by the native code.
Windows 8 - The web view exposes a window.external.notify function that Javascript can call at will.
反向桥通常要容易得多:如果 webview 公开了一个全局 javascript 函数,本机代码可以简单地调用它并传递任何所需的参数。诀窍在于该调用是否同步,具体取决于平台。