监听localStorage变化(当页面)
今天用到了监听localStorage,然后搜索了一些文章博客,我最后总结一下,可以直接拿来用1、网上很多写到的都是说同域不同页面下的运用,这个太多了,我就不写了,简单,我没有用到暂时。2、我刚好优化项目想到本地存储localStorage,然后同页面监听,重写localStorage的方法,抛出自定义事件:<!doctype html><html lang="e...
·
今天用到了监听localStorage,然后搜索了一些文章博客,我最后总结一下,可以直接拿来用
1、网上很多写到的都是说同域不同页面下的运用,这个太多了,我就不写了,简单,我没有用到暂时。
2、我刚好优化项目想到本地存储localStorage,然后同页面监听,重写localStorage
的方法,抛出自定义事件:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>监听localStorage变化(同页面)</title>
</head>
<body>
<button class="add">add</button>
<button class="add1">add1</button>
<button class="del">del</button>
<script src="http://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous"></script>
<script>
var orignalSetItem = localStorage.setItem;
localStorage.setItem = function(key,newValue){
var setItemEvent = new Event("setItemEvent");
setItemEvent.key = key;
setItemEvent.newValue = newValue;
window.dispatchEvent(setItemEvent);
orignalSetItem.apply(this,arguments);
};
window.addEventListener("setItemEvent", function (e) {
if(e.key=='demo'){
var _this=localStorage.getItem("demo")
if(_this!=e.newValue){
alert('key值为demo的值发生改变,之前是'+_this+'当前为'+e.newValue)
}else{
alert('key值为demo值'+e.newValue);
}
}
});
$('.add').click(function () {
localStorage.setItem("demo","123");
})
$('.add1').click(function () {
localStorage.setItem("demo","111");
})
var orignalremoveItem = localStorage.removeItem;
localStorage.removeItem = function(key,newValue){
var removeItemEvent = new Event("removeItemEvent");
removeItemEvent.key = key;
removeItemEvent.newValue = newValue;
window.dispatchEvent(removeItemEvent);
orignalremoveItem.apply(this,arguments);
};
window.addEventListener("removeItemEvent", function (e) {
if(localStorage.getItem("demo")){
if(e.key=='demo'){
alert("key值为demo,删除成功");
}
}else{
alert("本地数据无key值为demo")
}
});
$(".del").click(function () {
localStorage.removeItem('demo')
})
</script>
</body>
</html>
更多推荐
所有评论(0)