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

我使用HTML5和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'; } }); 

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

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

此事件在每次页面更改时触发两次,第一次以字符串forms返回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是您想要在按下后退按钮时重定向用户的页面

演示