繁体   English   中英

检测URL更改是否返回

[英]Detect if URL change was back

我有一个网络应用程序,在导航时会使用一些微妙的效果。 本质上是页面从右侧“滑入”。

应用程序中的所有内容都是基于对哈希的更改,并且一切正常。

我只是在寻找一种确定URL更改是否为“后退”操作的方法。 我不会尝试影响更改-我的应用程序已经可以完美地处理该更改。 我只想扭转“影响”。 换句话说,如果我知道他们单击“后退”,我想从左向左滑动,而不是从右向右滑动。

请记住,我不需要动画本身的帮助,也不需要跟踪哈希中的应用程序状态-我只需要知道如何知道更改是否为“后退”操作。

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

在没有明确跟踪哈希值更改的情况下,是否可以在javascript中获得此信息?

使用上一页变量。 我将假设当您“更改”页面时,您是通过中央功能来完成此操作的。

在转到页面功能中

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM