localstorage 更新监测 storage事件

Posted mengfangui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了localstorage 更新监测 storage事件相关的知识,希望对你有一定的参考价值。

1、存储更新监测

存储状态监测的原理是storage事件。storage事件说明:

https://developer.mozilla.org/zh-CN/docs/Web/API/StorageEvent

storage事件是注册在window上的。

2、示例

同域下2个文件,分别为test.html和test1.html。

test.html文件为:

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>storage事件</title>
    </head>

    <body>
        <script type="text/javascript">
            setTimeout(function(){
                window.localStorage.setItem(a, 2)
            },1000)
            window.addEventListener("storage", function(e) {
                console.log(e)
            });
        </script>
    </body>

</html>

test1.html文件为:

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>storage事件</title>
    </head>

    <body>
        <script type="text/javascript">
            window.localStorage.setItem(a, 1)
            window.addEventListener("storage", function(e) {
                console.log(e)
            });
        </script>
    </body>

</html>

运行2个文件,test1.html的控制台输出为:

技术图片

即能监测到localStorage的变化。

3、说明

(1)是同域的不同文件会监测到存储值的变化。

(2)同一个文件,存储值的变化,监测不到。如:

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>storage事件</title>
    </head>

    <body>
        <script type="text/javascript">
            window.localStorage.setItem(a, 1)
            setTimeout(function(){
                window.localStorage.setItem(a, 2)
            },2000)
            setTimeout(function(){
                window.localStorage.setItem(a, 3)
            },3000)
            setTimeout(function(){
                window.localStorage.setItem(a, 4)
            },4000)
            window.addEventListener("storage", function(e) {
                console.log(e)
            });
        </script>
    </body>

</html>

运行上述文件,控制台没有输出内容。

 

以上是关于localstorage 更新监测 storage事件的主要内容,如果未能解决你的问题,请参考以下文章

HTML5的local storage存储的数据到底存到哪去了

2个浏览器窗口间通信

localStorage

window.localStorage 与 chrome.storage.local

localStorage,session Storage和Vuex

持久化的本地存储,localStorage