- 当我们想打开一个新的页面时,会使用到
window.open(newPageUrl)
- 然后想聚焦到已经打开过的页面并且不需要刷新,而不是重新打开的话,可以使用
let win1
if(win1 && !win1.closed) {
win1.focus()
} else {
win1 = window.open(newPageUrl)
}
此时,如果新的页面修改了路由到其他页面去的话,下次聚焦还是会跳到这个地址已经改变过的页面,这就是本文需要解决的问题了。
项目使用的是vue框架,当然离不开vue-router了,我们可以在路由变化时给window设置新的name
router.afterEach((to, from) => {
window.name = to.path
})
然后再给上面第二步代码判断条件补充win1.name === newPageUrl
let win1
if(win1 && !win1.closed && win1.name === newPageUrl) {
win1.focus()
} else {
win1 = window.open(newPageUrl)
}
完结~