前端随笔一——浏览器的历史回退自我实现

这是我第一次写随笔,不足的地方还望见谅。

首先说说我这次代码的由来,之前为了实现一个页面的前进和后退,一般会想到使用 history 的 back 函数,但有时候并不能完美的后退。有时会出现 A 后退到 B ,B 后退到 C ,然后 C 后退又回到了 B ,之后就是死循环了。查阅网上的资料后发现,可能是 B 页面有 Ajax 等影响 B 页面,使得从历史栈中加载出的 B 页面向后退请求并刷新了页面,使得 B 入栈了。对于这种情况,我看到有人说使用 sessionStorage 来解决。我尝试的写了一下,解决了。于是,共享一下自己的代码,肯定是有更好的方法的,只是我的知识还没有涉及到,望大家见谅。我只写了后退这个动作的入栈和出栈,想要实现前进的话,同样的道理,再写一个栈,在回退出栈时把出来的 URL 入栈保存就是了。

 1 /* 历史Url入栈;因网页中有Ajax,使得页面后退后刷新,back()函数后退后的页面Url也入栈,形成死循环。故重新实现history。 */
 2 function pushHistory(hisstr){
 3     if(sessionStorage.historyurl == null || sessionStorage.historyurl == ""){
 4         var array = new Array();
 5         array.push(hisstr);
 6         sessionStorage.historyurl = array.join(";");
 7     }else{
 8         var array = sessionStorage.historyurl.split(";");
 9         array.push(hisstr);
10         sessionStorage.historyurl = array.join(";");
11     }
12 }
13 
14 /* 历史Url出栈 */
15 function popHistory(){
16     var array = sessionStorage.historyurl.split(";");
17     if(array.length <= 0){
18         return null;
19     }
20     var hisstr = array.pop();
21     sessionStorage.historyurl = array.join(";");
22     return hisstr;
23 }

 

转载于:https://www.cnblogs.com/HcatTrees/p/8364852.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值