页面哈希和后退按钮问题 phonegap+Jquery

page hash and backbutton issue phonegap+Jquery

本文关键字:按钮 问题 phonegap+Jquery 哈希      更新时间:2023-09-26

我是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,而是转到加载页面。

如果我在从加载到 page1 的过渡中使用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>

j查询:

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

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

从 jquery-1.7.1 升级到 jquery-1.7.2 时遇到了麻烦,所以我很快就切换回来了。JQM网站表示它目前支持jQuery 1.6.4和1.7.1。你能尝试降级到 1.7.1 看看它是否有效吗?

(使用 cordova 1.8.0 和 JQM 出血边缘)

我知道

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

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

$(document).on("pagebeforeshow", "#splash", function () {
if(!splashDisplayed){
    splashDisplayed=true;
}else{
    navigator.app.exitApp();
}
});