从JQuery Mobile历史记录中删除页面,以便“后退”按钮绕过它

时间:2012-11-06 13:54:05

标签: javascript jquery jquery-mobile navigation history

我查看了jQuery Mobile文档无济于事,所以希望有人在这里解决了我到目前为止还没有找到的方法。

我有一个jquery移动页面,以通常的方式提供(称之为“项目显示”)。它包含有关特定项目的信息。此页面上有一个按钮,可以将用户带到一个页面,在该页面中,他/她可以在显示的项目上记录笔记(基本上是一个大文本区域)。单击备注页面上的“保存”POST并重定向回项目显示页面。

我的问题是,一旦保存了笔记,我希望项目显示页面上的“后退”按钮链接回用户在首次访问项目显示页面之前所处的页面,而不是默认行为将用户带回备注页面(因为它在技术上是用户所在的最后一页)。

所以,目前的行为:

项目列表页面 - >项目显示页面 - >点击“在项目上编辑备注” - >备注页面 - >点击“保存” - >项目显示页面 - >点击“返回” - >备注页。

我想用“后退”替换最后一步,将用户带到项目列表页面。

有这样的运气吗?感谢您提供的任何和所有指导

2 个答案:

答案 0 :(得分:1)

您可以更改页面而不将其保留在浏览器历史记录中,如下所示:

$.mobile.changePage('#page', {reverse: false, changeHash: false});

这是基于这个答案:Jquery mobile, remove previous page

答案 1 :(得分:0)

我和你一样处于同一个问题,我创造了一种方法,唯一有效的方法。如果有人知道更好的事情,那将会非常有帮助!所以,让我解释一下如何解决(这有点复杂,但对我有用)。

您需要覆盖后退按钮以在您想要的html中按X页回滚历史记录,例如:

$(document).ready(function() {
    $('[data-rel=back]').click(function() {
        window.history.go(-4);
        return false;
    });
});

但是,4实际上是会话中的导航计数器变量。

如果你使用jsf,它将是这样的:

window.history.go(-#{mySessionManagedBean.navigationCounter});

此外,您需要初始化并增加每个页面的更改。

如果你使用jsf,它将是这样的:

<h:commandButton ...>
    <f:setPropertyActionListener target="#{mySessionManagedBean.navigationCounter}" value="#{mySessionManagedBean.navigationCounter + 1}" />
</h:commandButton>