外观
浏览器页签跳转和管理 - window.open
具体需求
- 根据当前 ID,通过 window.open 打开不同的页签
- 如果当前页签已经打开,就不需要重复打开,而是切换到当前页签
- 如果当前页签不存在或者被关闭,就需要打开新的页签
- 在打开的页签中,可以关闭当前页签
解决方案
- 根据当前 ID,通过 window.open 打开不同的页签
// 定义一个对象,用于存储打开的页签
const tabs = {};
// 打开新的页签
tabs[id] = window.open(`https://xxx.com?id=${id}`, id);
- 如果当前页签已经打开,就不需要重复打开,而是切换到当前页签。以下是优化后的代码:
// 根据 id 判断 当前页面是否存在 或者 被关闭
if (tabs[id] && !tabs[id].closed) {
// 如果存在,就切换到当前页签
tabs[id].focus();
} else {
// 如果不存在,就打开新的页签
tabs[id] = window.open(`https://xxx.com?id=${id}`, id);
}
- 在打开的页签中,可以关闭当前页签,需要注意的是,Window.close() 方法只能关闭由 window.open() 方法打开的窗口。
window.close();