首页 web前端 H5教程 利用Storage Event实现页面间通信的示例代码

利用Storage Event实现页面间通信的示例代码

Oct 09, 2018 pm 04:46 PM
event storage

这篇文章主要介绍了利用Storage Event实现页面间通信的示例代码的相关资料,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

我们都知道触发window.onstorage必须满足以下两个条件:

  • 通过localStorage.setItem或sessionStorage.setItem保存(更新)某个storage

  • 保存(更新)这个storage时,它的新值必须与之前的值不同

上面的第二个条件,简单来讲就是:要么是storage的初始化,因为不存在的storage,其值为null;要么就是对已有storage的更新

举例:

// 初始化storage
window.localStorage.setItem('a', 123);

// 注册onstorage事件
window.onstorage = (e) => {
  console.log(e);
};

// 更新storage
window.localStorage.setItem('a', 123);
登录后复制

上面的最后一行代码并不会触发onstorage事件,因为a的值并没有变化,前后都是123,所以浏览器判定这次更新是无效的

由于onstorage事件是浏览器触发的,所以如果我们打开了多个相同域名下的页面,并在其中任一一个页面执行window.localStorage.setItem方法(还要保证满足文章开头提到的第二个条件),那么其他页面如果监听了onstorage事件,则这些页面中的onstorage事件回调都会被执行

举例:

// http://www.example.com/a.html
<script>
// 注册onstorage事件
window.onstorage = (e) => {
  console.log(e);
};
</script>
登录后复制
// http://www.example.com/b.html
<script>
// 注册onstorage事件
window.onstorage = (e) => {
  console.log(e);
};
</script>
登录后复制
// http://www.example.com/c.html
<script>
// 触发onstorage事件
window.localStorage.setItem(&#39;a&#39;, new Date().getTime());
</script>
登录后复制

只要保证c页面在a和b页面之后打开(哪怕三个页面不在同一浏览器窗口,这里需要区别窗口与tab页的区别),那么a和b页面中的onstorage事件都会被触发

现在我们已经知道如何利用storage event实现了页面之间的通信,那么这个通信对于我们有何用途呢?

其实我们只需知道是哪个storage的更新操作触发了onstorage事件就足够了,那么我们如何知道呢?onstorage事件回调和其他事件回调函数一样,也接收一个event对象参数,在这个对象中有3个有用的属性,它们分别是:

  • key 被初始化或更新的storage的键名

  • oldValue 被初始化或更新的storage之前的值

  • newValue 被初始化或更新的storage之后的值

结合这3个关键属性,我们就可以实现页面间的数据同步

最后提一下localStorage与sessionStorage的区别

localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在页面会话结束时会被清除

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问Html5视频教程

相关推荐:

php公益培训视频教程

HTML5图文教程

HTML5在线手册

以上是利用Storage Event实现页面间通信的示例代码的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1253
24
PHP8.0中的事件处理库:Event PHP8.0中的事件处理库:Event May 14, 2023 pm 05:40 PM

PHP8.0中的事件处理库:Event随着互联网的不断发展,PHP作为一门流行的后台编程语言,被广泛应用于各种Web应用程序的开发中。在这个过程中,事件驱动机制成为了非常重要的一环。PHP8.0中的事件处理库Event将为我们提供一个更加高效和灵活的事件处理方式。什么是事件处理在Web应用程序的开发中,事件处理是一个非常重要的概念。事件可以是任何一种用户行

Steam 夏季特卖 - Valve 预告 AAA 游戏可享受 95% 的折扣,确认病毒游戏 Palworld 和内容警告的折扣 Steam 夏季特卖 - Valve 预告 AAA 游戏可享受 95% 的折扣,确认病毒游戏 Palworld 和内容警告的折扣 Jun 26, 2024 pm 03:40 PM

Steam 的夏季特卖此前曾举办过一些最优惠的游戏折扣,而今年 Valve 似乎又迎来了另一场全垒打。刚刚发布了一段预告片(请参见下文),其中展示了一些 Steam 夏季特卖折扣游戏。

storage文件夹在哪里 storage文件夹在哪里 Jan 12, 2021 pm 02:02 PM

storage文件夹在文件管理中,其查找方法:1、直接打开手机桌面,点击系统工具进入;2、选择文件管理跳转;3、浏览全部文件;4、在文件管理中找到storage文件夹即可。

Python之Pygame的Event事件模块怎么使用 Python之Pygame的Event事件模块怎么使用 May 18, 2023 am 11:58 AM

Pygame的Event事件模块事件(Event)是Pygame的重要模块之一,它是构建整个游戏程序的核心,比如常用的鼠标点击、键盘敲击、游戏窗口移动、调整窗口大小、触发特定的情节、退出游戏等,这些都可以看做是“事件”。事件类型Pygame定义了一个专门用来处理事件的结构,即事件队列,该结构遵循遵循队列“先到先处理”的基本原则,通过事件队列,我们可以有序的、逐一的处理用户的操作(触发事件)。下述表格列出了Pygame中常用的游戏事件:名称说明QUIT用户按下窗口的关闭按钮ATIVEEVENTPy

Steam 夏季促销预告片预告 AAA 游戏优惠 95%,确认 Palworld、Stellaris 降价,内容警告 Steam 夏季促销预告片预告 AAA 游戏优惠 95%,确认 Palworld、Stellaris 降价,内容警告 Jun 26, 2024 am 06:30 AM

Steam 的夏季特卖此前曾举办过一些最优惠的游戏折扣,而今年 Valve 似乎又迎来了另一场全垒打。刚刚发布了一段预告片(请参见下文),其中展示了一些 Steam 夏季特卖折扣游戏。

在JavaScript中,当浏览器窗口调整大小时,这是哪个事件? 在JavaScript中,当浏览器窗口调整大小时,这是哪个事件? Sep 05, 2023 am 11:25 AM

使用window.outerWidth和window.outerHeight事件在JavaScript中获取窗口大小,当浏览器调整大小时。示例您可以尝试运行以下代码来使用事件检查浏览器窗口大小−&lt;!DOCTYPEhtml&gt;&lt;html&gt;  &lt;head&gt;   &lt;script&gt;&am

苹果称 128GB 的 iPhone 15 空间依然充裕 因为有云存储 苹果称 128GB 的 iPhone 15 空间依然充裕 因为有云存储 Mar 19, 2024 am 11:40 AM

近日,CNMO了解到,苹果公司发布了名为"iPhone15Storage|Don’tLetMeGo|Apple"的宣传视频,旨在通过强调云存储的便利性,解决用户对手机存储空间不足的担忧。尽管市场上对于手机内存需求日益增长,iPhone15系列依然保持128GB作为起步存储空间,但苹果通过宣传视频表示,即便是这样的基础配置,用户也能通过iCloud云存储实现海量照片的存储。宣传视频中,一名男子面对手机中的照片,陷入删与不删的两难抉择,此时背景音乐响起"don'tletgo"的旋律,仿佛在诉说用户对

Tesla 发出 Robotaxi 邀请参加 10 月 10 日在洛杉矶举行的自动驾驶演示活动 Tesla 发出 Robotaxi 邀请参加 10 月 10 日在洛杉矶举行的自动驾驶演示活动 Sep 27, 2024 am 06:20 AM

最初预计特斯拉将在今年 8 月推出之前泄露的 Robotaxi,但首席执行官埃隆·马斯克 (Elon Musk) 推迟了这一活动,理由是 Robotaxi 前部的美观发生了变化,并且在最后一刻需要额外的时间

See all articles