javascript – 如何在浏览器选项卡之间共享单个js资源?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何在浏览器选项卡之间共享单个js资源?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2255字,纯文字阅读大概需要4分钟。
内容图文
例如,我想通过socket.io,longpolling等多个选项卡刷新聊天消息…无论我有什么…为此,我只想为所有选项卡使用单个连接.我该怎么做?我可以将常用数据存储在localStore,cookies等中……我需要某种信号量,它只为其中一个选项卡提供单个同步器资源,在该选项卡关闭后,它会提供给另一个选项卡,等等. ..这怎么可能?我想到的唯一解决方案是告诉localStore onbeforeunload资源是免费的,但这并不适用于每个浏览器.还有其他选择吗?
解决方法:
这个问题中的关键词是“标签间通信”,“跨窗口消息传递”等…
一种解决方案类似于长轮询:inter-tab-communication-using-local-storage/定期请求localStore / cookie进行更改,并添加一个队列来分配公共资源(例如socket.io连接).您可以使用onbeforeunload或timeout来确定是否导航或关闭选项卡/窗口.在那之后不久,队列中的下一个选项卡将分配资源……
第二种解决方案是使用“localStore存储事件”.在这种情况下,您不必定期询问localStore(如果onbeforeunload事件可用).根据这一点:localStorage eventHandler Doesn’t Get Called存储事件旨在仅影响其他选项卡,因此它们是intertab通信的不错选择.唯一的问题是onunload:local storage on window unload event.因此,由于缺乏onunload支持,第一种解决方案可能会更好.
第三个解决方案是使用“共享webworkers”,但它们尚未在多个浏览器(Internet Explorer)中实现,或者它们无法打开socket(firefox).所以目前它们不是一个选项,可能在修复错误后1 – 2年……这是一个演示 – 仅限工作铬 – html5-shared-web-worker-examples.
第四个解决方案是window.postMessage,目前尚未完成浏览器支持.我在一些sto问题中读过它,并且他们都写道postMessage不能满足我们的需求.我没有检查有关该功能的确切细节,我认为这不值得…有一个关于跨域交叉iframe通信的例子:Cross-Domain iframe communication但我认为不可能进行相同的域跨窗口通信.
第五个解决方案是使用cookie,但在这种情况下,每个选项卡都应该ping document.cookie,因为没有cookie更改事件,比如localstore中的存储事件. BNC Connector使用这种方法.
第六种解决方案是使用WebSQL.它的驱动程序是异步非阻塞,所以它会比localStorage更好,但目前它不受firefox和msie的支持.
结论:
现在 – 2013.10.03 – 从资源利用者选项卡定期ping localStore的最佳选择.其他选项卡应该侦听时间戳更新的存储事件.如果该事件没有及时,则资源utilizer选项卡具有超时,并且队列中的下一个选项卡应获取资源.也许以后onunload事件或共享工作人员将是可靠的,但目前他们还不够好……
解:
我找到了结论中描述的方法的实现:
intercom.js
我添加了一个关于资源共享的一般接口的issue,但在我的情况下,单个socket.io资源就足够了……
内容总结
以上是互联网集市为您收集整理的javascript – 如何在浏览器选项卡之间共享单个js资源?全部内容,希望文章能够帮你解决javascript – 如何在浏览器选项卡之间共享单个js资源?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。