实现多标签页(Cross-Tab)通信是前端开发中常见的需求,主要用于在同一个浏览器下的不同 Tab 之间同步状态(如:在一个 Tab 退出登录,其他 Tab 也应自动跳转;或者同步购物车数据)。 前提条件:这些标签页必须属于同源(Same Origin),即协议、域名、端口必须一致。 以下是几种主流的实现方案,按推荐程度排序: --- 1. Broadcast Channel API(推荐方案) 这是专门为跨标签页通信设计的 API,使用最简单,语义最清晰。它就像是一个广播频道,所有订阅了该频道的 Tab 都能收到消息。 优点:API 简单,专门用于此场景,性能好。 缺点:兼容性较好,但不支持 IE 和极老版本的浏览器。 代码示例: --- 2. LocalStorage + storage 事件(兼容性最好) 利用 的特性:当 LocalStorage 发生变化时,其他(非当前)Tab 会触发 事件。 优点:兼容性极好(支持 IE8+),API 简单。 缺点:数据负载有限(字符串),需要手动序列化/反序列化 JSON;会频繁读写磁盘(虽然现代浏览器有缓存优化)。 代码示例: ...