我使用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';
}
});
如果方向回来,它将返回主屏幕页面,但在返回主页面之前显示最后一页。
答案 0 :(得分:1)
对于任何与导航相关的问题,请始终依靠pagecontainerbforechange
事件。这是一个在更改页面之前触发的事件;它在一个事件中都是popstate
,hashchange
和navigate
。
此事件在每次更改页面时触发两次,第一次将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
是您想要在后退按钮时重定向用户的页面<强> Demo 强>