浏览器标签页之间通信之 -- Localstorage+IndexedDB

推荐一个最近写的工具 @lllllxt/storage-idb-message,用于同源下浏览器标签之间的通讯, 相比纯用Localstorage做通讯,这个插件可以传递更大的数据。

文档:

storage-idb-message

基于 LocalStorage + IndexedDB 封装的消息传递的模块,在同源(不跨域)的前提下,用于同一页面多个 iframe、跨 tab 页面、移动端不同 webview 页面之间的消息传递

做这玩意的初衷

本来我是只用 LocalStorage 做消息传递的, 但后来某次在 Chrome 上传递的数据>5M 导致数据丢失,于是乎就有了用 LocalStorage 做指令,IndexedDB 做数据存储这个想法了

参考:

LocalStorage 储存空间在 2.5MB 到 10MB 之间(各家浏览器不同),而 IndexedDB 比 LocalStorage 大得多,一般来说不少于 250MB,甚至没有上限。

通过 npm 安装

npm i @lllllxt/storage-idb-message
import StorageIdbMessage from '@lllllxt/storage-idb-message'

const StorageIdbMessage = request('@lllllxt/storage-idb-message')

const _SIM = new StorageIdbMessage(opts: Opts)

// 监听指令
_SIM.response = (orderName, data) => {
    console.log(orderName, data)
})

// 发送指令
_SIM.send(YourOrder, AnyData)

通过<script>标签引用

storage-idb-message.min.js

此方法是向 window 对象中注册一个 StorageIdbMessage 对象

参数(Opts)
参数描述
storageKey指令的 LocalStorage key 名称
clearIdb默认 true,是否在 response 后清除 IndexedDB 的数据
force默认 false,调用 clearCache 清除缓存
方法
方法描述
send(order: String, data: any)发送
response(order: String, data: any)响应其他页面传过来的指令
静态方法
方法描述
clearCache(successFn?: Function, errFn?: Function)清除 indexedDB 缓存

BTW ------------------------------------

由于开发初衷是为了在vue工程上使用, 于是同时也写了基于这个工具开发的vue插件 @lllllxt/vue-storage-idb-message

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值