检测URL更改是否返回

Detect if URL change was back

本文关键字:是否 返回 URL 检测      更新时间:2023-09-26

我有一个网页应用,在导航时使用了一些微妙的效果。从本质上讲,页面是从右边"滑动"进来的。

应用程序中的一切都是基于对哈希值的更改,所有这些都工作得很好。

我只是在寻找一种方法来确定对URL的更改是否为"返回"操作。我不会试图影响这个改变,我的应用已经很好地处理了。我只是想扭转"效应"。换句话说,如果我知道他们在点击"后退",我想从左边滑动到左边,而不是通常的从右边滑动。

请记住,我不需要动画本身的帮助,也不需要在散列中跟踪应用程序的状态——我只需要知道如何知道这个变化是否是一个"返回"动作。

另外,我真的不想在应用程序中保留一个哈希状态列表,因为用户点击周围,试图确定他们是否要"返回"。如果这真的是唯一的选择,我可能会考虑这样做,但我希望找到一个解决方案,只知道用户是否启动了返回(后退按钮,历史记录。Go(-1),右键单击"返回"等)。

这些信息在javascript中可用而不显式地跟踪哈希值的变化吗?

使用前页变量。我假设当你"修改"页面时,你是通过一个中心功能来做的。

在你的goto页面函数

// 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!
}

公立小学

我正在使用窗户。previoupage作为通用容器,并使用prevPage在范围内进行比较。这是为了限制设置window. preouspage

的位置。编辑:

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

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
}