window.open聚焦回浏览器开过的tab标签

1,412 阅读1分钟

摘要:最近要实现一个效果:后台跳转到前台首页的时候会window.open一个新的浏览器tab标签页,切回后台再次点击跳转到前台该应用的时候,如果浏览器已经打开过这个应用,则浏览器自动跳转到该tab标签,并且不刷新。

let winName = Math.random();
if(window[winName] ){
    window[winName].forcus(); // 打开已经打开过的tab
}
window[winName] = window.open(url, name); // 存储到window全局

问题:如果从后台a打开前台b标签,但是b关掉了,a中全局还保存有b的window,再次forcus的时候就会有问题。

新的方案改进版本

实现方案:配合两个事件来实现,onload 和 beforeunload 以及通过postmessage通信来实现。

window.open.jpg