• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > Storage Event如何实现页面间通信

Storage Event如何实现页面间通信

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含javascript,html5,前端等相关知识,匿名希望在学习及工作中可以帮助到您
这篇文章分享给大家的内容是关于Storage Event如何实现页面间通信,内容很有参考价值,希望可以帮到有需要的小伙伴。

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

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

  2. 保存(更新)这个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('a', new Date().getTime());
</script>

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

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

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

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

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

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

最后提一下localStorage与sessionStorage的区别

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

相关推荐:

Android自定义环形LoadingView效果

Html5移动端获奖无缝滚动动画实现

以上就是Storage Event如何实现页面间通信的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • 用html5的canvas和JavaScript创建一个绘图程序的简单实例
  • Javascript 高级手势使用介绍
  • svg和css3实现环形渐变进度条的代码示例
  • 用exfe.js和canvas解决移动端 IOS 拍照上传图片翻转问题(附代码)
  • Canvas跨域的解决方案介绍
  • canvas实现图片涂鸦功能(附代码)
  • 用canvas实现简单的下雪效果(附代码)
  • HTML5中一些可以优化的细节介绍
  • HTML5 WebSQL四种基本操作的介绍
  • HTML5和原生app如何进行交互?

相关文章

  • 2018-12-03悟空间(Wozlla Games)是怎样一个团队?
  • 2018-12-03HTML5画渐变背景图片并自动下载实现步骤_html5教程技巧
  • 2018-12-03怎么学习前端开发?求推荐学习路线??
  • 2018-12-03HTML5 标签、事件句柄属性以及浏览器兼容情况速查手册
  • 2018-12-03HTML5的Canvas实现绘制曲线的方法
  • 2018-12-03HTML5触摸事件演化tap事件介绍_html5教程技巧
  • 2018-12-03HTML最新标准HTML5总结
  • 2017-08-06使用HTML5的链接预取功能(link prefetching)给网站提速
  • 2018-12-03canvas与h5如何实现视频截图功能
  • 2018-12-03html5通过postMessage进行跨域通信的方法

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 浅谈媒体元素的实例教程
    • HTML5如何使用Web Storage储存?Web Storage储存的2种方式(示例)
    • html5中设置或返回音频/视频是否默认静音的属性defaultMuted
    • HTML5 video 视频标签使用介绍
    • canvas如何实现二维码和图片合成的代码
    • H5图像遮罩
    • 关于H5页面的10篇文章推荐
    • HTML5 到底是什么?
    • 详解HTML5中表单验证的8种方法介绍
    • HTML5标签小集

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有