1

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

使用科尔多瓦 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,而是会转到加载页面。

如果我changeHash: true在从加载到 page1 的过渡中使用,那么 page2 上的后退按钮将调出第一页,但在第一页上它将调出加载页面而不是退出应用程序。

我的问题是:如何让后退按钮在 page2、page3 等上返回历史记录,但在 page1 上退出应用程序?

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

4

3 回答 3

0

从jquery-1.7.1升级到jquery-1.7.2的时候遇到了麻烦,所以赶紧切换回去。JQM 网站说它目前支持 jQuery 1.6.4 和 1.7.1。你可以尝试降级到 1.7.1 看看它是否有效?

(使用 cordova 1.8.0 和 JQM-bleeding edge)

于 2012-06-18T12:40:29.443 回答
0

我遇到了同样的问题并使用了解决方法:

页面布局:

<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...
}

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

于 2012-06-18T12:07:55.833 回答
0

我知道这是一个非常古老的问题,但我刚刚遇到了这个问题,并认为我会添加我的解决方案:

我刚刚在启动页面中添加了一个“onPageBeforeShow”侦听器,并使用全局布尔值“splashDisplayed”来检测这是否是第一次显示启动屏幕。如果是,则将布尔值设置为 true,如果不是,则退出应用程序。

$(document).on("pagebeforeshow", "#splash", function () {
if(!splashDisplayed){
    splashDisplayed=true;
}else{
    navigator.app.exitApp();
}
});
于 2016-09-10T13:02:42.907 回答