如何在jQuery Mobile中设置主页?

时间:2012-10-17 11:38:18

标签: cordova jquery-mobile

  

可能重复:
  resume webapp from previous position?

我希望用户在他们回来时显示他们访问过的最后一页。示例:用户加载我的应用(我使用PhoneGap),点击#second_page,关闭应用,再次打开应用。而不是#home页面,我想立刻向他展示#second_page。

我使用localStorage保存页面:

$(document).on('pagechange', function() {
    localStorage.setItem('lastPage',window.location.hash);
});

我试过了:

$(document).bind("mobileinit", function(){
    var lastPage = localStorage.getItem('lastPage');
    if(lastPage) {
        $.mobile.changePage(lastPage);
    }
});

但是我得到了一个"未捕获的TypeError:无法调用方法'触发'未定义" jquery.mobile-1.2.0.min.js中的错误:2。

另一个想法是沿着这些方向做点什么:

var redirectedToLastPage = false;
$(document).bind("pageinit", function(){
    var lastPage = localStorage.getItem('lastPage');
    if(lastPage && !redirectedToLastPage) {
        $.mobile.changePage(lastPage);
        redirectedToLastPage = true;
    }
});

但它看起来并不优雅。我该怎么办?

1 个答案:

答案 0 :(得分:0)

我最终得到了这个解决方案:

$(document).on('pagechange', function() {
    var lastPage = '#'+$.mobile.activePage.attr('id');
    // console.log('setting last page to '+lastPage);
    localStorage.setItem('lastPage',lastPage);
});

var redirectedToLastPage = false;
$(document).bind("pagecreate", function(){
    var lastPage = localStorage.getItem('lastPage');
    if(lastPage // lastPage needs to be set
        && !redirectedToLastPage  // only do it on first pageload
        &&!window.location.hash // we don't want to redirect from pages other than the homepage
    ) {
        if($("div[data-role='page']"+lastPage).length) { // make sure a "page" div with that ID exists!
            // console.log('redirecting to '+lastPage);
            $.mobile.changePage(lastPage);
        } 
        // else {
        //  console.log(lastPage+' does not exist!');
        // }
    }
    redirectedToLastPage = true;
});

请随时指出我可能做错的任何事情:)