使用jquery mobile更改为不在历史记录中的上一页

时间:2012-01-04 15:35:02

标签: jquery-mobile

我正在jquery mobile中实现对后退按钮的覆盖。 因此,如果访问以树的叶子为目标的书签,我可以正确处理返回树。

在这种情况下,后退按钮不会执行任何操作,因为$.mobile.urlHistory.stack仅包含当前页面。 我打算做的是将changePage改为我编程确定的页面是当前页面的父页面。

目前我正在尝试覆盖基本的后退按钮行为

$('a[data-rel="back"]').live('tap',handleBackButton).live('click',handleBackButton)

function handleBackButton(e) {
  var currenturl = $.mobile.activePage.data('url');
  var backurl = backUrlFromTree(currenturl);

  // handle back tree navigation ourselves
  // if we're still trying to go back but there's nowhere to go
  if($.mobile.urlHistory.activeIndex === 0) {
    e.preventDefault();
    e.stopImmediatePropagation();

    console.log('no history to navigate');
    console.log('going back to ' + url);

    $.mobile.changePage(url, {
      transition: "slide",
      reverse: true
    });

    $.mobile.urlHistory.clearForward();
  }
}

这里的问题是changePage调用urlHistory.addNew将页面推送到堆栈导致错误地排序历史记录,我真正想要addNew做的是将页面移到前面的叠加。

有什么想法?我以为我可能需要扩展changePage和|或addNew方法。

0 个答案:

没有答案