【前端开发】跨标签页广播通信教程,可方便新窗口修改原窗口实时更新
日常业务开发中我们常常会碰到如下的场景,即两个标签页之间的通信问题。我们在第一个标签页如何执行操作后在第二个标签页获取到信息。
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