0

我有一个 Web 应用程序,它在导航时使用了一些微妙的效果。基本上页面从右侧“滑入”。

应用程序中的所有内容都基于对哈希的更改,所有这些都运行良好。

我只是在寻找一种方法来确定对 URL 的更改是否是“后退”操作。我不会试图影响更改——我的应用程序已经完美地处理了这一点。我只是想扭转“效果”。换句话说,如果我知道他们正在单击“返回”,我想从左侧滑入,而不是通常的从右侧滑入的动作。

请记住,我不需要动画本身的帮助或跟踪哈希中的应用程序状态——我只需要知道如何知道更改是否是“返回”动作。

此外,我真的不想在应用程序中保留哈希状态列表,因为用户单击以尝试确定他们是否要“返回”。我可能会考虑,如果它真的是唯一的选择,但我希望找到一个只知道用户是否启动的解决方案(返回按钮,history.go(-1),右键单击“返回”等)。

在没有明确跟踪哈希更改的情况下,这些信息是否在 javascript 中可用?

4

1 回答 1

0

使用前一页变量。我将假设当您“更改”页面时,您是通过中心功能进行的。

在您的转到页面功能中

// Try to get the previous page if known (will be 'unidentified' if unknown)
var prevPage = window.previousPage;

// Set this page as the previous before moving.
window.previousPage = 'this page';

// Assume that gotoPage is where we are headed
if(gotoPage == prevPage)
{
    // We're going back!
}
else
{
    // We're going forward!
}

附言

我使用 window.previousPage 作为通用容器并使用 prevPage 在范围内进行比较。这是为了限制您必须设置 window.previousPage 的位置数量而设计的

编辑:

没有考虑过多次返回,使用数组的相同想法(未经测试,但这是一般想法)

var prevPage = '';

if( Object.prototype.toString.call( window.previousPage ) === '[object Array]' )
    prevPage = window.previousPage[ window.previousPage.length - 1 ];

if(prevPage == gotoPage)
{
    // Splice out the last entry
    window.previousPage.splice( window.previousPage.length - 1, 1);
    // Going back DO NOT add new window.previousPage
}
else
{
    // Going forward add the previousPage before changing
    window.previousPage[ window.previousPage.length ] = 'this page';

    // Move Page
}
于 2013-01-05T19:13:57.307 回答