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);
相关推荐
Dlrb12113 分钟前
C语言-字符串指针与函数指针
java·c语言·前端
PBitW8 分钟前
组件封装注意事项
前端·vue.js
weiggle13 分钟前
Android 输入事件分发流程:从物理触控到 Activity 的完整旅程
前端
yingyima17 分钟前
开发者必备在线工具集合 2025:实战案例解析
前端
前端毕业班18 分钟前
面试官:实现一个带类型约束的 EventEmitter
前端·面试
卷帘依旧21 分钟前
SPA 中的 Hash 和 History 模式
前端
用户44455436542625 分钟前
AndroidAutoSize使用时遇到的特麻烦bug
前端
茉莉玫瑰花茶29 分钟前
LangGraph 入门教程:构建 AI 工作流 [ 案例三 ]
前端·人工智能·python
scan72433 分钟前
pydantic格式输出
服务器·前端·javascript
ZC跨境爬虫39 分钟前
跟着MDN学HTML_day44:(ProcessingInstruction接口)
前端·javascript·ui·html·媒体