我尝试的第一件事是AppsGeyser,很简单,但不是我想要的.如果用户没有互联网连接,我会看到那些丑陋的浏览器消息.如果用户按下手机上的菜单按钮,我想要来自Twitter Bootstrap的“菜单栏”中的菜单切换.所以AppsGeyser不是我想要的.而且没有iOS支持.
接下来我用PhoneGap做了很多尝试,太棒了!我想要的只是可能的,但是最好的解决方案是怎样或者最佳的?我想要的是跟随我的意见:
>如果应用程序启动它检查互联网连接,没有连接?从缓存加载.其他只是显示网站. HTML5缓存清单最佳选择?玩了它,但我只想在没有互联网连接的情况下从缓存加载.到目前为止看起来这是不可能的..?
>如果将提交某个表格,请再次检查是否有互联网连接,没有互联网连接?只是一个提醒:“没有互联网连接!”并且不要提交,因此表单仍然填充,就像用户刚才那样.点击/ submit => ajax调用网站=>失败? => show alert =>返回false,因此表单不会被提交.最好的选择?
>我想要的最后一件事,就像我之前说过的那样,当用户按下手机上的菜单按钮时,它会切换Twitter Bootstrap中的“菜单栏”.
所以前两件事我认为不是问题,但最后一件事……?
我发现了这个:http://docs.phonegap.com/en/1.0.0/phonegap_events_events.md.html#menubutton
如果网站是“在应用程序中”,但我不希望网站“在应用程序中”,这没什么大不了的.只需从互联网上加载(如果没有互联网连接,则加载缓存),所以如果我改变了一些东西,我就不必更改网站和应用程序.只是网站!但是可以在“远程”网站上使用Cordova吗?如果网站通过PhoneGap运行应用程序,它运行,并工作!?
比如,如果我将此代码放在我的网站中:
document.addEventListener("menubutton", onMenuKeyDown, false); function onMenuKeyDown() { alert('Menu button pressed!'); }
并且包括cordova js文件,它对普通访问者没有任何作用,但如果使用该应用程序并且使用webview从PhoneGap应用程序加载网站,它是否有效?
请你对这一切都有意见!
谢谢!
对我来说,PhoneGap中的教科书方法是将应用程序编写为一个独立的JavaScript / HTML / CSS应用程序,它可以放在设备上并从服务器端的Web服务中检索数据.这需要一致的努力,并且通常对传统的服务器端Web应用程序(这似乎是您所描述的)进行逆向工程并不是特别容易.此模型为您提供出色的性能,并允许您在不发布更新的情况下更新应用程序内容.我认为最好的办法是将应用程序的表示层重写为由后端派生的API驱动的JavaScript应用程序.如果您与其他原生应用竞争,这应该会给您非常出色的性能.另外,如果你正确构建它,它将为你提供离线功能和更多功能(缓存,日志记录等).
快速方法(但可能不是我推荐的方法)只是在设备上打包主页(HTML / JS / CSS),然后像往常一样链接到您的网页内容.这不是我之前使用过的方法,但应该可以很好地工作.如果你想构建离线功能,将这种方法与像jQuery Mobile这样的工具包相结合应该可以正常运行(jQM不会为每个sae提供离线功能,但应该为你提供一个合适的基础来构建你自己的离线处理).
我希望这有帮助!