window.open的巧妙使用

526 阅读1分钟
  1. 当我们想打开一个新的页面时,会使用到
window.open(newPageUrl)
  1. 然后想聚焦到已经打开过的页面并且不需要刷新,而不是重新打开的话,可以使用
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)
}

完结~