@Wangww0925
2020-06-18T05:33:07.000000Z
字数 1488
阅读 228
js-存储
sessionStorage(长期存储): 关闭浏览器及关闭
/**
* 保存数据到本地
* 参数
name sessionStorage的名称
data 存储数据
isTrue true-同页面可以监听,false-同页面无法监听
*/
function setSessionStorage(name,data,isTrue){
if(isTrue){
var orignalSetItem = window.sessionStorage.setItem;
window.sessionStorage.setItem = function(key,newValue){
var setItemEvent = new Event("setItemEvent");
setItemEvent.newValue = newValue;
setItemEvent.key = key;
window.dispatchEvent(setItemEvent);
orignalSetItem.apply(this,arguments);
}
}
window.sessionStorage.setItem(name, data);
}
/**
* 从本地存储获取数据
* 参数
name sessionStorage的名称
*/
function getSessionStorage(name){
var getValue = sessionStorage.getItem(name);
return getValue
}
/**
* 本地存储中删除某个保存的数据
* 参数
name sessionStorage的名称
*/
function delSessionStorage(name){
window.sessionStorage.removeItem(name);
}
// 清空sessionStorage
function clearSessionStorage(){
window.sessionStorage.clear();
}
/**
* 监听sessionStorage的变化
* 参数
callback 回调
isTrue true-监听当前页面,false-监听其他页面
*/
function listenSessionStorage(callback,isTrue){
if (!sessionStorage.length) {
// 这个调用能触发目标事件,从而达到共享数据的目的
localStorage.setItem('getSessionStorage', Date.now());
};
if(isTrue){
window.addEventListener("setItemEvent", function (e) {
// console.log(e);
// console.log('key', e.key);
// console.log('oldValue', e.oldValue);
// console.log('newValue', e.newValue);
// console.log('url', e.url);
callback(e)
});
}else{
window.addEventListener("storage", function (e) {
// console.log('key', e.key);
// console.log('oldValue', e.oldValue);
// console.log('newValue', e.newValue);
// console.log('url', e.url);
callback(e)
})
}
}
作者 wendy
2019 年 5月 23日