我是Phonegap编程的新手,希望有人可以在这里为我提供帮助:

使用了cordova 1.7.0,Jquery 1.7.2和JQM 1.1.0。该应用程序正在Android上进行测试。

我正在尝试为该应用创建启动页面。

<body>
    <div data-role="page" id="page_loading">
        <div data-role="content">
            <h1 >
                <b>welcome</b>
            </h1>
        </div>
    </div>

    <div data-role="page" id="page_1">
    </div>

    <div data-role="page" id="page_2">
    </div>
</body>


我在$.mobile.changePage($('page_1'), { changeHash: false});函数的末尾放置了onDeviceReady()。应用启动时,它会立即显示加载页面,加载完成后,它将移至第一页。

在第一页上,当我按page_1上的后退按钮时,它将退出该应用程序。这就是我要的。

然后,我再次使用mobile.changePage转到第2页。如果仍然使用changeHash: false,后退按钮将再次退出该应用程序。如果我使用changeHash: true,则后退按钮不会返回到page_1,而是会转到加载页面。

如果在从加载到第1页的过渡中使用changeHash: true,则第2页上的后退按钮将调出第一页,但在第一页上将调出加载的页,而不是退出应用程序。

我的问题是:如何使后退按钮回到第2页,第3页等的历史记录,但退出第1页的应用程序?

我的猜测是我必须以某种方式重建/清除哈希。谁能告诉我如何?谢谢

最佳答案

我有同样的问题,并使用了一种解决方法:

页面布局:

<body>
    <!-- page_1 before page_loading in source -->
    <div data-role="page" id="page_1">
    </div>
    <!-- page_loading will be shown first -->
    <div data-role="page" id="page_loading">
        <div data-role="content">
            <h1 >
                <b>welcome</b>
            </h1>
        </div>
    </div>
    <div data-role="page" id="page_2">
    </div>
</body>


jQuery的:

function onBodyLoad()
{
    //go to page_loading before deviceready without keeping it in browser history
    $.mobile.changePage('#page_loading', {reverse: false, changeHash: false});
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady()
{
    //your initialization code here...

    //now go to page_1 without keeping it in browser history since the actual first page was #page_1 already
    $.mobile.changePage('#page_1', {reverse: false, changeHash: false});

    //your code here...
}


这应该符合您的需求,只需尝试一下...

10-07 19:02
查看更多