我想在回到历史时总是去第一页

时间:2014-11-17 18:27:02

标签: jquery jquery-mobile

我使用HTML5& amp;创建了一个移动应用程序。 jquery mobile,我只需要在每次按下后退按钮时返回第一页。

我们说我有这些页面:

  • 主要
  • 产品
  • 搜索
  • 搜索结果
  • 关于

我们说我走了:

主要 - >搜索 - >搜索结果 - >产品,然后我去了关于页面。

回去时,历史会是(如果我在关于页面上):

关于 - >产品 - >搜索结果 - >搜索 - >主

我需要的是每次按回页面而不是浏览历史记录时直接返回主页面。

我试图在最后一对中搜索这个没有任何运气,这阻止我完成我的应用程序。

我几天来一直在寻找答案,我来到这段代码:

jQuery(document).ready(function($) {

  if (window.history && window.history.pushState) {

    $(window).on('popstate', function() {
      var hashLocation = location.hash;
      var hashSplit = hashLocation.split("#!/");
      var hashName = hashSplit[1];

      if (hashName !== '') {
        var hash = window.location.hash;
        if (hash === '') {
            window.location = 'index.html#mainScreen';
        }
      }
    });

  }

});

但仍然没有运气

我也得到了这段代码:

$(window).on("navigate", function (event, data) {
  var direction = data.state.direction;
  if (direction == 'back') {
    window.location = 'index.html#mainScreen';
  }
});

如果方向回来,它将返回主屏幕页面,但在返回主页面之前显示最后一页。

1 个答案:

答案 0 :(得分:1)

对于任何与导航相关的问题,请始终依靠pagecontainerbforechange事件。这是一个在更改页面之前触发的事件;它在一个事件中都是popstatehashchangenavigate

此事件在每次更改页面时触发两次,第一次将toPage作为字符串返回,第二次作为对象返回。要更改toPage值,它应该是字符串,因此您需要在第一次触发时进行更改。

此外,它还会返回options对象,该对象可以告诉您导航的方向options.direction,无论是forward还是back

$(document).on("pagecontainerbeforechange", function (e, data) {
    if (typeof data.toPage == "string" && data.options.direction == "back" && data.prevPage[0].id == "aboutPage") {
        data.toPage = "#mainScreen"; /* redirect to main page */
        data.options.transition = "flip"; /* optional */
    }
});

在上面的代码中,您需要确保:

  1. toPage字符串
  2. options.directionback
  3. prevPage是您想要在后退按钮时重定向用户的页面
  4.   

    <强> Demo