vue通过BroadcastChannel实现不同标签页直接传递消息

crossTagMsg.js

复制代码
const channel = new BroadcastChannel('demo');

export function sendMsg(type, content){
    channel.postMessage({
        type,
        content,
    });
}

export function listenMsg(callback){
    const handler = (e) => {
        callback && callback(e.data);
    }
    channel.addEventListener('message', handler);
    return() => {
        channel.removeEventListener('message', handler);
    };
}

A.vue发送消息页面

复制代码
import {listenMsg} from '@/utils/crossTagMsg'

function update(){
	sendMsg("更新", "dddd")
}

B.vue监听消息页面

复制代码
import {listenMsg} from '@/utils/crossTagMsg'

//监听消息
const cancelListen = listenMsg((msgInfo) => {
  console.log('监听到了更新', msgInfo)
})
//组件销毁时移除监听
onBeforeUnmount(cancelListen);
相关推荐
阿珊和她的猫几秒前
深入理解 React 中的 Render Props 模式
前端·react.js·状态模式
内存不泄露8 分钟前
基于 Spring Boot 的医院预约挂号系统(全端协同)设计与实现
java·vue.js·spring boot·python·flask
森叶13 分钟前
Cookie 和 Token 的应用场景优势比较 & Cookie 不能使用的场景补充
javascript
IT_陈寒13 分钟前
SpringBoot 3.0实战:10个高效开发技巧让你的启动时间减少50%
前端·人工智能·后端
im_AMBER16 分钟前
前端 + agent 开发学习路线
前端·学习·agent
亿坊电商23 分钟前
利于SEO优化的CMS系统都有哪些特点?
前端·数据库
juejin_cn40 分钟前
使用 Codex SDK 轻松实现文字控制电脑
前端
CUYG40 分钟前
Moment.js常用
前端
用户812748281512041 分钟前
漏学Input知识系列之“偷”走了其他窗口的事件pilferPointers
前端
用户812748281512041 分钟前
安卓14自由窗口圆角处理之绘制圆角轮廓线
前端