当前位置: 首页 > news >正文

浏览器内多标签页同步内容

最简单的是通过广播订阅实现同浏览器之间的消息同步,这不是唯一解,胜在好用,原生支持。它生效在同一个浏览器中,不过不同浏览器之前一般不涉及消息同步,那需要依靠服务端

<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><title>跨标签页同步Demo</title></head><body><!-- 唯一元素:文本域 --><textareaid="editor"rows="20"cols="80"placeholder="在此输入..."></textarea><script>// 获取文本域元素、创建一个叫做text-sync-demo的广播订阅、以及生成当前标签页的标识consttextarea=document.getElementById('editor');constchannel=newBroadcastChannel('text-sync-demo');constsessionId=Date.now().toString(36);letisComposing=false;// 聚合状态标志// 发送消息的方法,广播文本内容,带发送者IDfunctionbroadcast(text){channel.postMessage({type:'update',text:text,sender:sessionId});}// 1. 聚合事件:中文输入法开始/结束textarea.addEventListener('compositionstart',()=>{isComposing=true;});textarea.addEventListener('compositionend',(e)=>{isComposing=false;// 组合结束后立即发送最终文本broadcast(textarea.value);});// 2. 修改事件:普通输入(非组合状态)textarea.addEventListener('input',()=>{if(!isComposing){broadcast(textarea.value);}});// 初始化时尝试从其他标签页恢复内容channel.postMessage({type:'request-state',sender:sessionId});channel.onmessage=(event)=>{const{type,text,sender}=event.data;// 排除自身,同步文本域内容if(type==='update'&&sender!==sessionId){textarea.value=text;}elseif(type==='request-state'&&sender!==sessionId&&textarea.value){// 其他标签页请求当前文本,回复一条更新broadcast(textarea.value);}};</script></body></html>
http://www.jsqmd.com/news/719735/

相关文章:

  • RTS风格相机控制
  • 数字散斑DIC技术:金属薄板焊接变形全场动态监测及工艺优化全解析
  • 以开源技术、跨境数据与绿色算力为支点,“开放东方社区”上线
  • 成都金士力:极端环境电机驱动领域的专业技术服务商 - 深度智识库
  • Qwen2.5-14B-Instruct推理显存占用分析:Pixel Script Temple双卡部署内存分配图解
  • 用STM32F103C8T6驱动DS1302时钟模块,我踩过的坑和完整代码分享(含逻辑分析仪调试)
  • 别再只用元胞数组了!MATLAB结构体(struct)的5个高效技巧与常见误区
  • DIC技术:铁路道桥箱梁四点弯曲载荷下的应变与裂纹全场分析
  • 乌鲁木齐本地黄金回收新选择 小邓黄金以透明服务助力市民安心变现 - 博客万
  • 如何用免费开源PCB查看器OpenBoardView快速定位电路板问题
  • 2026年全国消防排烟风机与工业通风源头厂家深度测评指南 - 优质企业观察收录
  • 语音转文字技术如何选择?faster-whisper-GUI一站式解决方案深度解析
  • ProperTree完整指南:跨平台Plist编辑器快速上手与高效使用
  • 如何用免费开源统计软件JASP解决你的数据分析痛点?终极完整指南
  • 2026年呼伦贝尔自驾旅游怎么选?解码自由侠国际旅行社有限公司硬核实力 - 深度智识库
  • CSDN无耻之路
  • HoRain云--Perl包与模块实战
  • 成都市蜀宏吊装工程:郫都区设备吊装搬运服务 - LYL仔仔
  • 航顺全球最小M4晶圆嵌入式封装极限挑战
  • 2026年4月 RTX 5080 显卡品牌横评实测:散热、供电、做工,三大终极排行榜 - 华Sir1
  • 如何用微信小程序为情侣打造专属互动空间:Rainbow-Cats完整实现指南
  • 终极Azure Kinect传感器SDK完整指南:从零开始掌握3D视觉开发
  • 案例之 逻辑回归_癌症预测
  • pH计品牌推荐:耐用性强、技术先进且售后响应快的品牌对比(产品包含台式/笔式/实验室PH计) - 品牌推荐大师1
  • Flutter for OpenHarmony 天气应用实战DAY2:天气图标渲染+多日预报布局开发
  • 从游戏背包到任务队列:用C++ list的splice实战优化你的数据结构设计
  • **用Python实现从头到尾的分子几何优化:计算化学中的发散创新实践**在现代计算化学中,**分子几何优化(Geometr
  • FAST-LIVO:高性能稀疏直接法激光-视觉-惯导紧耦合SLAM系统深度解析
  • 上海恩翔搬家服务:上海市国际物流推荐哪几家 - LYL仔仔
  • 别再乱画了!新手用嘉立创打样PCB,这5个设计细节最容易翻车