在线网站使用phonegap代码

时间:2012-10-16 15:56:36

标签: cordova twitter-bootstrap

我有一个基于Twitter Bootstrap的网站。通过一些额外的改进,它在手机和平​​板电脑上运行良但我想要一个真正的应用程序,不想复制一切。首先,仅针对Android。

我尝试的第一件事是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应用程序加载网站它可以工作吗?

请你对这一切都有意见!

谢谢!

1 个答案:

答案 0 :(得分:4)

对我来说,PhoneGap中的教科书方法是将应用程序编写为一个独立的JavaScript / HTML / CSS应用程序,它可以放在设备上并从服务器端Web服务中检索数据。这需要一致的努力,并且通常对传统的服务器端Web应用程序(这似乎是您所描述的)进行逆向工程并不是特别容易。此模型为您提供出色的性能,并允许您在不发布更新的情况下更新应用程序内容。

我认为最好的办法是将应用程序的表示层重写为由后端派生的API驱动的JavaScript应用程序。如果您与其他原生应用竞争,这应该会给您非常出色的性能。此外,如果你正确构建它,它将为你提供离线功能和更多功能(缓存,日志记录等)。

快速方法(但可能不是我推荐的方法)只是在设备上打包主页(HTML / JS / CSS),然后像往常一样链接到您的网页内容。这不是我之前使用过的方法,但应该可以很好地工作。如果你想构建离线功能,将这种方法与像jQuery Mobile这样的工具包相结合应该可以正常运行(jQM不会为每个sae提供离线功能,但应该为你提供一个合适的基础来构建你自己的离线处理)。

我希望这有帮助!