如何監聽localStorage變化


本地存儲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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM