message-tool
v1.0.9
Published
js事件订阅
Readme
message-tool插件使用说明
本插件是mq-wz得增强搬,mq-wz后续不在维护,使用mq-wz项目可以切换至message-tool
import Mq from 'message-tool';
// 创建实例
const event = new Mq(
type, // 'memory' | 'localStorage' | 'sessionStorage' 默认memory, 可选
uid // 唯一标识符, 可选
)
event.setType('localStorage') // 设置type, 会清空之前所有消息
event.getEvents() // 获取所有事件
event.getDataStore() // 获取所有消息数据
// 发布消息
event.emit(topic, eventId, data, {
enable: true
useCount: 1 // 消息使用次数默认不限次数
expireTime: Date.now() + 1000 * 5 // 消息过期时间默认不过期
})
const options = {
eventId: '123',
fn() {},
execCount: 1
}
event.off(topic, options?) // 删除消息
event.offAll() // 删除所有消息
event.removeStore(topic?) // 删除消息数据
Mq.clearStorage() // 删除所有消息数据
// 设置全局消息域,值为 'sameorigin' | 'crossorigin', sameorigin即同源,crossorigin即跨域
为sameorigin时,只能接收同源消息,且可以跨浏览器tab/iframe之间发送消息
为crossorigin时,可以接收同源和跨域消息,且可以跨iframe之间发送消息,不可跨跨浏览器tab之间发送消息
当作用域设置成功后,会自动触发全局消息topic为message-tool-sameorigin-init/message-tool-crossorigin-init的消息,可以监听该消息进行业务处理
Mq.setScope('sameorigin')
// 监听消息
event.on(topic, eventId, fn, execCount) // execCount为监听次数
// 跨浏览器tab/iframe之间发送消息 Mq.publish(topic, eventId, data = null, options?)
可选配置 options = { enable: boolean expireTime: number }
注: 通过setScope设置完消息作用域后才可以接收publish发送的消息
