Phonegap:导航回第一页后丢失第一页上的数据

时间:2014-03-07 03:25:27

标签: javascript android html cordova

Phonegap,为Android编写应用程序。这是我的应用程序应该做的:

1)onDeviceReady,读取xml(项目名称和每个项目的相应超链接 - 如此类型的目录)并在index.html上显示它们

onDeviceReady: function () {
    app.receivedEvent('deviceready');
    var readStatus = sessionStorage["readComplete"];
    alert("readComplete = " + readStatus);
    if (readStatus != "true") {
        app.readxml();
        sessionStorage["readComplete"] = "true";
    }
},


In app.readxml() I read all items + links in my datafile(XML) and add them to a ordered list in a div of Index.html page.
似乎每次加载页面时都会调用onDeviceReady(比如导航回来)。为每个页面加载和重建读取相同页面似乎是多余的,因为一旦我们阅读,页面应该记住它是如何构建的,控件将旧数据存储在其中。所以,我将读取xml状态存储在sessionStorage中,这样我就不会读取xml并重建每次页面。

2)当用户点击列表中的链接时,将其导航到page1.xml 3)点击后退按钮时,将它们带回Index.html

#3处的问题 - >当用户返回第一页(index.html)时,当时readStatus == true,Index.html显示为空白。

问题 - >我如何维护index.html的状态(从读取xml填充数据),这样我就不必在每个导航上重建页面。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

每当你在Cordova中打开一个新链接(page.html)时,前一页(index.html)都会被破坏,这种行为取决于系统,iOS有时会缓存以前的页面而Android似乎总是清除数据权利远。

如果您想避免重新加载XML数据,可以将其保存到sessionStorage或localStorage(JSON是一种很好的格式)。但是每当你回到index.html时,DOM都必须重新构建,还会有一个小的延迟。

针对您的问题的快速解决方法是在index.html中创建iframe以加载page.html。或者在index.html顶部使用Ajax加载page.html的浮动DIV层。假设您的index.html和page.html不太耗费资源,这两种方法都可以正常工作。

答案 1 :(得分:0)

data-dom-cache="true" 

在你的html标签中使用它。有关更多信息,请按此... http://demos.jquerymobile.com/1.2.0/docs/pages/page-cache.html