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);
相关推荐
v***56511 小时前
Spring Cloud Gateway
android·前端·后端
b***594311 小时前
分布式WEB应用中会话管理的变迁之路
前端·分布式
q***216011 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
顾安r11 小时前
11.21 脚本 网页优化
linux·前端·javascript·算法·html
S***H28312 小时前
JavaScript原型链继承
开发语言·javascript·原型模式
q***T58312 小时前
GitHub星标20万+的React项目,学习价值分析
前端·学习·react.js
合作小小程序员小小店12 小时前
web开发,在线%药店管理%系统,基于Idea,html,css,jQuery,java,ssm,mysql。
java·前端·mysql·jdk·html·intellij-idea
ClassOps12 小时前
Chrome 插件记录
前端·chrome
笙年12 小时前
Vue 作用域插槽
前端·javascript·vue.js
鹏北海13 小时前
从“版本号打架”到 30 秒内提醒用户刷新:一个微前端团队的实践
前端·面试·架构