【前端开发】跨标签页广播通信教程,可方便新窗口修改原窗口实时更新
日常业务开发中我们常常会碰到如下的场景,即两个标签页之间的通信问题。我们在第一个标签页如何执行操作后在第二个标签页获取到信息。
BroadcastChannel API 为我们提供了一种快捷且高效的途径
创建useTagMessage.ts文件
// 跨标签页通信方案 ‘Msg’即通道名称,可以是任何你想叫的名称 const broadCast = new BroadcastChannel('tagMessage'); export function sendMsg(type:string, content:string) { // 传入的内容必须是普通类型 象形式对象进行传输时请转换成普通类型 broadCast.postMessage({ type, content }); }; // 在监听获取方法内部我们需要多考虑一点关闭事件的方式,在空闲或者释放掉标签页面情况下不再执行监听 export function listenMsg(callback:Function) { const handler = (e:any) => { callback && callback(e.data); }; broadCast.addEventListener('message', handler); // 在组件卸载后将监听时间关闭 return () => { broadCast.removeEventListener('message', handler); broadCast.close(); }; };
在页面组件中使用
发送消息标签页
import { sendMsg } from '@/utils/hooks/useTagMessage';
sendMsg('fly','dataInfo');
接受消息标签页
import { listenMsg } from '@/utils/hooks/useTagMessage'; const listenMsgVal = listenMsg((e)=> { console.log(e, 'listenMsgVal'); });
本文来自博客园,作者:JeckHui;
个人主页:前端实用站点推荐; 热榜资讯早读:热榜资讯-导航;
转载请注明原文链接:https://www.cnblogs.com/xiaohuizhang/p/17776760.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)