问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

localStorage变更事件当前页响应

发布网友 发布时间:2022-04-22 11:52

我来回答

3个回答

懂视网 时间:2022-05-12 04:14

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

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

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

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

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

    举例:

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

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

    举例:

    只要保证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 里面的数据在页面会话结束时会被清除

    总结:

    热心网友 时间:2022-05-12 01:22

    基本原理如下:

    1 重新生成一个对象,包装localStorage原生方法:

    var Storage = {
    setItem : function(k,v){
      localStorage.setItem(k,v);
      ......
    },
    removeItem : function(k){
      localStorage.removeItem(k);
    .......
    },
    getItem :
    ...
    }

    2 在能引起storage变更时间的操作接口中,手动触发StorageEvent事件

      比如removeItem的实现中,你就需要初始化并触发StorageEvent事件:

    var se = document.createEvent("StorageEvent");
    se.initStorageEvent('storage', false, false, key, oldval, newval, url, storage);
    window.dispatchEvent(se);

    3 通过自封装的Storage对象操作,并在当前页监听:

    window.addEventListener("storage",function(e){
    console.log(e);
    },false);

    Storage.addItem('test','小朋友爱吃糖');

    到此为止。追问说了不要复制粘贴....能试过的我早就试过了。

    热心网友 时间:2022-05-12 02:40

    localStorage是没有失效时间的,sessionStorage的声明周期是浏览器的生命周期当浏览器关闭时,sessionStorage的数据将清空,而localStorage数据只要不通过代码特意的删除或手动删除,是永久保存的如果你要做过期时间,只能通过程序特意记录失效时间,使用时判断当前时间是否晚于失效时间,如果过了失效时间,在代码中将指定失效的项目删掉追问牛头不对马嘴

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    空调加氟时要注意什么? 电脑安装了pr兼容性pr显示系统兼容性报告 带你了解——赫伯罗特 一千克面粉三十元一克面粉多少钱 大米2元500克面粉3元500克 2千克大米和和1500克面粉多少钱?_百度... ...面粉每千克多少元.大米25千克4.5元一千克面粉2 买8000克面粉需要32元,每千克面粉多少钱 500克面粉2元钱1千克面粉多少钱,怎么练式? 软棕和硬棕哪个好 amd rx6800m相当于nvidia什么水平? vue中刷新数据丢失怎么搞啊? localstorage是什么意思? 怎么清除localstorage localstorage是什么,它有哪些作用 如何手动清除localStorage中的数据 HTML5 localStorage.removeItem();这个方法怎么使用?? 聊天群里必须要公布住址及电话号码吗? 在聊天群里说的话有法律效应吗 为什么有些人,会在群里面,分享,道理,和理论,自己为什么不去实现呢? 请问如何在一个新群中和别人熟悉起来 如何在群内发布通知 “我在”用英语怎么说? 群在哪里?所在哪里啊! 男友喜欢群里和一个女人暧昧, 在群里给群主和朋友们说两句打招呼的客套话。 我在群里所看见的图为什么和别人不一样 缓冲是什么?为什么观看视频手机好显示正在缓冲 手机看视频时总是显示以缓冲这是什么意思 手机wifi在满格下看在线视频老是缓冲是怎么回事 手机腾讯视频缓存为什么那么慢? html5 localstorage 怎么取存储条数 jquery如何实现刷新页面时清空本地存储的数据 localStorage和sessionStorage的区别 404 Not Found html5 localstorage能存多少 session storage可以删除吗 session storage怎么清除 输入tengdawifi.com以后直接转到了http://pc.likelife.cc/pc.html这个网址了,这个是怎么回事 智慧生活添加不了随行WiFi3 nowifinolife翻译中文 苹果手机下载的文件在哪里 深圳梅园新村小区周边配套怎么样? 百度Carlife怎么连不上 600字作文在我成长的每一天 初级会计资格报名时需要交什么资料? 抖音头像可以不放大吗 抖音头像大了不能显示全部怎么办 抖音头像圆圈太小了照片怎么移动 苹果6S在抖音直播封面尺寸是多少? 抖音里的背景和头像能和别人一样吗