phonegap hypride 在线和离线应用程序

Posted

技术标签:

【中文标题】phonegap hypride 在线和离线应用程序【英文标题】:phonegap hypride online and offline app 【发布时间】:2014-09-30 19:31:02 【问题描述】:

我正在开发一个 Sencha-touch 应用程序,并使用 Phonegap 进行打包。为了使开发更容易,我只使用 Phonegap 作为 shell 来加载我的在线网站。这一切都很好,我不需要在每次发生变化时都构建和分发应用程序。我只需要更新我的在线网站。

除了现在我想使用一些 PhoneGap 事件(resume、deviceready 等)。为了让这些事件正常工作,我需要在 index.html 中包含 gordova.js 文件。

我的问题是 index.html 在我的服务器上,而不是在 Phonegap www 文件夹中。因此,当我尝试在 index.html 中包含 gordova.js 时,例如:

<script type="text/javascript" src="cordova.js"></script>

应用程序在我的网络服务器上搜索 cordova.js,但找不到该文件。我知道我可以将 cordova.js 文件放在我的服务器上,但是每个平台的 cordova.js 文件不同,然后我不知道我需要加载哪个(平台)cordova 文件。

有没有办法在我的在线加载的 index.html 文件中包含离线文件(在 Phonegap www 文件夹中)?或者您有其他建议吗?

谢谢斯特凡

【问题讨论】:

【参考方案1】:

index.html 文件放在 assets\www 目录中,让它成为您的应用程序的起点。 在将位于assets\www 目录中的 index.html 文件中,您需要在 head 标记中添加以下代码。 window.location 将重定向到您的网站 URL。

<script>
    document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() 
        // Now safe to use the Codova API
     window.location="http://your.website/index.html"; 
</script>

您需要启用 CORS。要在客户端上启用 CORS,请按照以下步骤操作。 告诉 Cordova 在 config.xml 属性中加载您的网站是安全的(如果没有子域部分,您可以删除)

<access origin="http://your.website" subdomains="true"/>

【讨论】:

非常感谢您的回答。不幸的是,我仍然无法在“your.website”中使用 Cordova api,因为所有 Cordova api 都附加到窗口对象 (window.cordova) 并在我更改 window.location 时被删除。 另一种选择是使用 AJAX。这将保持第一个页面的加载,随后的请求将相应地操作 DOM。这可能需要重构您的网站以支持来自您的 APP 的 AJAX 调用。 这是一个很好的解决方案。目前,重构工作量很大。我将从网络服务器提供cordova.js(首先检查正确的目标平台)

以上是关于phonegap hypride 在线和离线应用程序的主要内容,如果未能解决你的问题,请参考以下文章

实现在线和离线工作的应用程序的最佳方法是啥?

机器学习服务助应用内文本语种在线和离线检测

如何在android应用程序中以在线和离线模式加载或检索网页?

XMPPFramework - 如何获取在线和离线好友列表?

实现在线和离线表现不同的 css

如何创建 Flutter 应用的离线和在线