博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于保留页面状态的一些总结
阅读量:6153 次
发布时间:2019-06-21

本文共 1243 字,大约阅读时间需要 4 分钟。

好吧,最近真的是太懒了,都没写过博客了。。。最近做了两个活动,两个活动中对于在页面跳转之后返回,都需要保留原页面的一些状态。于是总结一下。

页面状态描述

例如,一个页面中某个模块,有20条数据,折叠了起来,每点击一次加载更多按钮,则加载5条。那么,当用户展开了10条数据的时候,点击了跳转的地方。当用户返回的时候。需要展现10数据的样子。即原页面状态。

上张图片或许更好理解:

 

选择解决方案

①存储方式选择

毫无疑问,要记录状态。必须要暂存数据。这里有两种方式,localStorage和sessionStorage。两者的区别就不多说了。不过,这种情况下,当然是sessionStorage更好。

还没了解这两个的区别的

 

②存储时机选择

 这里就有必要提到我之前写的一片总结,《》。第一种方案,就是可以沿用这种方式。在用户点击的时候记录一下。但是这里我要说的不是这种方案。

而是利用window.onunload方法。

也就是说,用户跳转会触发这个事件,那么只要在这个方法中记录相应的数据到session里面即可。

如:

window.onunload = function(){    cache.setItem('pageHeight',document.body.scrollTop); //没错,返回定位也可以这样记录    cache.setItem('historyState',{         essayArrowFlag:self.essayArrowFlag,//展开文案为展开还是收起的标志         backupEssay:self.backupEssay,//用户当前展示的数据         backGuideEssay:self.backGuideEssay //总数据    });}

嗯。这样在页面加载的时候,先读取缓存。然后进行相应的赋值展示即可。

咋一看,似乎没什么问题。下面就来说说我遇到的“小坑坑”。

优缺点比较

①优点

1.不用绑定额外的事件,不用频繁记录。减少了开销。

2.不用写额外的函数。

②缺点

1.最致命的缺点就是,会在开发过程中给调试带来不便。仔细看看方法描述,不错,页面刷新也会调用该方法。也就是说,如果你需要删掉缓存的数据,再来一次的话。根本删不掉,必须新开一个页面。

2.也由于数据难删掉的原因,假如更新了某条数据的某些信息。即使是刷新页面也不会重新请求,取不到最新数据。加上实际情况下,同一模块的数据,往往会有几个不同的请求接口来提供。假如有些接口的信息更新了,而另一些跟不上。经常报错。整段垮掉。这给测试也带来了不少麻烦。

优化方向

1.最简单的,封装一下缓存模块。开发的时候,设置一个很小的缓存数据过期时间。

2.加多些从新请求数据的判断,例如,当某个接口的数据不对应时,所有接口都需要重新请求等。

 

转载于:https://www.cnblogs.com/LuckyWinty/p/6568291.html

你可能感兴趣的文章
MFC控件的SubclassDlgItem
查看>>
如何避免历史回退到登录页面
查看>>
《图解HTTP》1~53Page Web网络基础 HTTP协议 HTTP报文内的HTTP信息
查看>>
unix环境高级编程-高级IO(2)
查看>>
树莓派是如何免疫 Meltdown 和 Spectre 漏洞的
查看>>
雅虎瓦片地图切片问题
查看>>
HTML 邮件链接,超链接发邮件
查看>>
HDU 5524:Subtrees
查看>>
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
JQuery radio单选框应用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>