html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
关于操作webStorage:
localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等。
setItem存储value
用途:将value存储到key字段
用法:.setItem( key, value)
代码示例:
sessionStorage.setItem("key", "value"); localStorage.setItem("site", "js8.in");
getItem获取value
用途:获取指定key本地存储的值
用法:.getItem(key)
代码示例:
var value = sessionStorage.getItem("key"); var site = localStorage.getItem("site");
removeItem删除key
用途:删除指定key本地存储的值
用法:.removeItem(key)
代码示例:
sessionStorage.removeItem("key"); localStorage.removeItem("site");
clear清除所有的key/value
用途:清除所有的key/value
用法:.clear()
代码示例:
sessionStorage.clear(); localStorage.clear();
因此呢就例举一个关于sessionStorage的例子:
有在网上看到一个需求:用户在一个主页浏览时,点击一个列表进入详情页,返回时要求到用户刚刚浏览的位置,而不是重新刷新页面到了页面顶部。
解决方法:
通过sessionStorage,把滚动条的进度存到session中,然后不管你前进还是后退,数据都有保存,关闭窗口后再进页面才会清空数据,符合需求。
然后呢,我们就可以在每次滚动后都存储一下这个滚动条的位置;
$(window).scroll(function(){
sessionStorage.setItem("offsetTop", $(window).scrollTop());//保存滚动位置
});
//onload时,取出并滚动到上次保存位置
window.onload = function(){
var offsetTop = sessionStorage.getItem("offsetTop");
$(document).scrollTop(offsetTop);
};