監(jiān)聽(tīng)sessionStorage中值的變化
應(yīng)用場(chǎng)景:將登錄接口所返回的用戶(hù)信息存入sessionStorage,在其他地方需要使用到用戶(hù)信息,但不知道什么時(shí)候接口請(qǐng)求完,此時(shí)可以監(jiān)聽(tīng)sessionStorage中值的變化。
應(yīng)用:Event自定義事件 window.dispatchEvent();事件分發(fā)
var orignalSetItem = sessionStorage.setItem;
sessionStorage.setItem = function(key, newValue) {
var setItemEvent = new Event("setItemEvent");
setItemEvent.newValue = newValue;
window.dispatchEvent(setItemEvent);
orignalSetItem.apply(this, arguments);
};
// 獲取sessionStorage中需要監(jiān)聽(tīng)的值loginInfor
var info = sessionStorage.getItem("loginInfor");
if (info) { // 符合條件
console.log(info);
} else {
// 否則繼續(xù)監(jiān)聽(tīng)
window.addEventListener("setItemEvent", function(e) {
if ((e.key = "loginInfor")) {
var _this = sessionStorage.getItem("loginInfor");
if (_this != e.newValue) {
if (e.newValue) {
console.log(e.newValue);
console.log(_this);
}
}
}
});
}

浙公網(wǎng)安備 33010602011771號(hào)