欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用localStorage进行跨标签页通讯

程序员文章站 2022-07-14 09:23:57
...

localStorage API

什么是localStorage

提起localStorage,往往还牵扯到sessionStorage,它们都是web Storage的API,表示浏览器端数据存储。而区别是,sessionStorage会随着页面的关闭而销毁,localStorage则可永久存储。

标签页间通讯

localStorage的增删改,都会触发其storage事件,通过监听这个事件,控制它的值进行页面通讯。

localStorage的局限

只适用与同源页面,也就是协议,端口,域名相同的页面。

情景描述

用户在网站 A页面 中登录,在B页面退出,A页面与B页面的登录状态保持一致。

demo展示

  • 使用node.js构建服务器,确保A、B页面不违背同源策略

  • A页面默认登录状态,在B页面退出登录时,A页面也退出登录

A.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>A</title>
</head>
<body>
    <p>登录状态:<span class="login">已登录</span></p>
</body>
<script>
    localStorage.setItem("login", true);
    window.addEventListener('storage',function(e){      
        if(e.newValue === 'false'){
            document.querySelector('.login').textContent = '未登录';           
        }
    })
</script>
</html>

B.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>B</title>
</head>
<body>
    <button>退出登录</button>
</body>
<script>
var button = document.getElementsByTagName("button")[0];
button.addEventListener('click',function(e){
    localStorage.setItem("login",false);
})
</script>
</html>

运行效果图:
使用localStorage进行跨标签页通讯