Jquery 当我回顾历史时,我总是想翻开第一页

Jquery 当我回顾历史时,我总是想翻开第一页,jquery,jquery-mobile,Jquery,Jquery Mobile,我已经使用HTML5和jquery mobile构建了一个移动应用程序,每次按下后退按钮时,我只需要返回到第一页 假设我有以下几页: 主要 产品 搜寻 搜索结果 关于 假设我去: 主-->搜索-->搜索结果-->产品,然后我转到关于页面 回到过去,历史会是(如果我在关于第页): 关于-->产品-->搜索结果-->搜索-->主 我需要的是每次按BackPage时直接返回主页,而不是浏览历史 我在过去几年中尝试搜索这个,但没有任何运气,它阻止了我完成我的应用程序 我花了好几天的时间来寻找答案,我

我已经使用HTML5和jquery mobile构建了一个移动应用程序,每次按下后退按钮时,我只需要返回到第一页

假设我有以下几页:

  • 主要
  • 产品
  • 搜寻
  • 搜索结果
  • 关于
假设我去:

主-->搜索-->搜索结果-->产品,然后我转到关于页面

回到过去,历史会是(如果我在关于第页):

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

我需要的是每次按BackPage时直接返回主页,而不是浏览历史

我在过去几年中尝试搜索这个,但没有任何运气,它阻止了我完成我的应用程序

我花了好几天的时间来寻找答案,我找到了以下代码:

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';
  }
});
但还是没有运气

我还得到了以下代码:

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

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

对于任何与导航相关的问题,请始终依靠
PageContainerForechange
事件。它是在更改页面之前触发的事件;它是一个
popstate
hashchange
navigate
组合事件

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

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

$(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 */
    }
});
在上面的代码中,您需要确保:

  • toPage
    是一个字符串
  • 选项。方向
    后退
  • prevPage
    是当按下后退按钮时要重定向用户的页面

  • @billthelizard这是一个很好的问题,它将有助于使用JQM的其他人。老实说,你不会在文档中找到它。但是,您可以深入研究JQM代码并进行一些实验,以找到解决方案。我投票赞成重新打开:)使用JQM事件有一个更好的解决方案。希望你的问题能重新打开,在那之前,请阅读关于
    pagecontainerbeforechange
    。我会,谢谢你Omar:)用你尝试过但失败的内容更新你的帖子。谢谢你Omar,这对我很有效,我正在我的android手机上做更多的测试。我在我的多html项目中尝试了这个解决方案,但没有成功。它保持在同一页中。@rdon用你的代码发布一个问题,如果你想实现,我会帮助你。好的@Omar,这是我的问题: