我想在回到历史时总是去第一页
我使用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
事件。 这是一个在更改页面之前触发的事件; 它是一个popstate
, hashchange
并在一个事件中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 */ } });
在上面的代码中,您需要确保:
-
toPage
是一个字符串 -
options.direction
又back
-
prevPage
是您想要在按下后退按钮时重定向用户的页面
演示