0

可能重复:
从以前的位置恢复 webapp?

我希望用户回来时看到他们访问的最后一页。示例:用户加载我的应用程序(我正在使用 PhoneGap),点击#second_page,关闭应用程序,再次打开应用程序。而不是#home page,我想立即向他展示#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);
    }
});

但我在 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;
    }
});

但它似乎不是很优雅。我该怎么做?

4

1 回答 1

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;
});

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

于 2012-10-18T09:21:17.047 回答