实现目标
当前浏览到第N页,点击某一个新闻,进入新闻详情页,点击返回时,列表数据不重新加载,焦点仍定位在进入详情页之前的位置。
思路
- 缓存列表内已展示的数据;
- 进入详情页时在缓存内添加该新闻的ID(键为articleId);
- 返回时在js内判断缓存内是否包含articleId,如果存在,则通过缓存的列表数据进行页面渲染;
- 通过articleId定位元素,滚动窗口值该元素处;
- 缓存不能始终存在。
根据当前项目情况,考虑缓存放入sessionStorage,滚动窗口使用IScroll。
实现方案
1、缓存列表数据
//cacheKey 缓存key cacheValue 缓存内容json结构 position 值为before和after分别用于加载最新和加载下一页
function addToCache(cacheKey,cacheValue,position){
cacheValue = JSON.stringify(cacheValue);
var allCacheData = sessionStorage.getItem(cacheKey);
if(allCacheData != null){
if(position == "before"){
allCacheData = cacheValue + "::::" +allCacheData;
} else {
allCacheData = allCacheData + "::::&#