【问题标题】:phonegap hypride online and offline appphonegap hypride 在线和离线应用程序
【发布时间】: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 文件夹中)?或者您有其他建议吗?

谢谢斯特凡

【问题讨论】:

    标签: javascript cordova


    【解决方案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(首先检查正确的目标平台)
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 2014-08-15
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多