页面之间的通信

简介: 页面之间的通信

注意:他只适用于同一个网站不同页面下的通信。因为localStorage中存储的数据只能在同一个网站下取到。


web storage


SessionStorage和LocalStorage都是浏览器本地存储,统称为Web Storage,存储内容大小一般支持5-10MB 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。


相关API:


  1. xxxxxStorage.setItem('key', 'value'); 该方法接受一个键名和值作为参数,将会把键值对添加到存储中,如果键名存在,则更新其对应的值。


  1. var data = xxxxxStorage.getItem('person'); 该方法接受一个键名作为参数,返回键名对应的值。


  1. xxxxxStorage.removeItem('key'); 该方法接受一个键名作为参数,并把该键名从存储中删除。


  1. xxxxxStorage.clear() 调用该方法会清空存储中的所有键名


备注:SessionStorage存储的内容会随着浏览器窗口关闭而消失。 LocalStorage存储的内容,需要手动清除才会消失。


storage事件(以前没听说过)


  1. Storage对象发生变化时触发(即创建/更新/删除数据项时,Storage.clear() 只会触发一次)。


  1. 在同一个页面内发生的改变不会起作用。


  1. 在相同域名下的其他页面发生的改变才会起作用。(修改的页面不会触发事件,与它共享的页面会触发事件)


key       :  修改或删除的key值,如果调用clear(),为null
 newValue    :  新设置的值,如果调用clear(),为null
 oldValue    :  调用改变前的value值,如果调用clear(),为null
 url         :  触发该脚本变化的文档的url
 storageArea :  当前的storage对象


使用方法:


window.addEventListener('storage',function (event) {
    //此处写具体业务逻辑
})


页面通信例子


该例子就是01.index.html中在localStorage中存储数据,02.index.html中的input中实时获取到数据并显示。使其两个输入框中的数据实时一样。


// 01.index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>提供数据</title>
    </head>
    <body>
      <input type="text" id="input">
      <script>
        const input = document.getElementById("input");
        input.onchange = () => {
          localStorage.setItem("data", input.value)
        }
      </script>
    </body>
    </html>


// 02.index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>获取数据</title>
    </head>
    <body>
      <input type="text" id="input">
      <script>
        const input = document.getElementById("input");
        window.addEventListener("storage", (event) => {
          input.value = event.newValue
        })
      </script>
    </body>
    </html>


该demo需要你在同一个域名和端口下测试。所以你需要安装一个http-server包,来帮你启动项目。


npm install -g http-server


网络异常,图片无法展示
|


网络异常,图片无法展示
|



相关文章
|
11月前
|
存储 前端开发 安全
跨页面通信的方式有哪些?
跨页面通信的方式有哪些?
185 0
|
6月前
|
存储 移动开发 API
本地跨页面通讯
本地跨页面通讯包括Web Storage、Cookies、Broadcast Channel API、SharedWorker和postMessage API等方法。Web Storage和Cookies用于存储数据共享,Broadcast Channel API提供消息通道,SharedWorker支持多页面共享后台线程,postMessage用于不同窗口或页面间的消息传递。根据项目需求选择合适的技术,可实现高效通信。
|
6月前
组件间的通信
组件间的通信
|
6月前
|
存储 前端开发 安全
无限连接:前端跨页面通信的实现与应用
在前端开发中,有时我们需要在不同的页面之间进行数据传递和交互。这种场景下,前端跨页面通信就显得尤为重要。前端跨页面通信是指在不同的页面之间传递数据、发送消息以及实现页面间的交互操作。本文将详细介绍前端跨页面通信的属性、应用场景以及实现方法,并提供一些代码示例和引用资料,帮助读者深入了解并应用这一重要的技术。
|
6月前
|
存储 缓存 JavaScript
跨标签页通信的8种方式(上)
跨标签页通信是指在浏览器中的不同标签页之间进行数据传递和通信的过程。在传统的Web开发中,每个标签页都是相互独立的,无法直接共享数据。然而,有时候我们需要在不同的标签页之间进行数据共享或者实现一些协同操作,这就需要使用跨标签页通信来实现。
177 0
|
6月前
|
存储 JavaScript 前端开发
跨标签页通信的8种方式(下)
跨标签页通信是指在浏览器中的不同标签页之间进行数据传递和通信的过程。在传统的Web开发中,每个标签页都是相互独立的,无法直接共享数据。然而,有时候我们需要在不同的标签页之间进行数据共享或者实现一些协同操作,这就需要使用跨标签页通信来实现。
140 0
|
6月前
|
存储 前端开发 JavaScript
多个页面之间如何进行数据传递
多个页面之间如何进行数据传递
202 0
|
6月前
|
存储 Web App开发 移动开发
跨页面通信有多少种技术方式可以实现?
跨页面通信有多少种技术方式可以实现?
160 0
|
Web App开发 视频直播
浏览器跨标签页通信、双向数据传输、实时通信有什么区别?
浏览器跨标签页通信、双向数据传输、实时通信有什么区别?
79 0
|
存储 Web App开发 前端开发
💞💞💞SharedWorker 让你多个页面相互通信
SharedWorker 是一个新的Web Worker API,它允许你在多个页面之间共享一个Worker。 SharedWorker 代表一种特定类型的Worker,可以在多个浏览器上下文中运行,
251 0
💞💞💞SharedWorker 让你多个页面相互通信