使用window.open()搭配参数_self(新页面替换当前页面),或使用window.location.href跳转到新页面后,再点击后退到原页面,再重新进行跳转事件时,页面不仅没有进行跳转,且没有任何反应(控制台无错误信息)。

说得笼统一点,这是因为第一次跳转时window.open()或window.location.href已经记录过一个要跳转的值了,跳转或后退到原页面时,该值没有被清空,再次执行事件时自然会没有反应。

思路:

定义一个全局变量记录window.open()打开的窗体
如过该变量被记录过,则先关闭该窗口,然后再次打开新窗口即可


原有问题的代码:

    // 跳转至详情页
    goDetail(row) {
      // console.log(row)
      window.open(`https://xxxx.xxxx.com/?id=${row.id}`, '_self')
    },

解决方案:

    // 跳转至详情页
    goDetail(row) {
      // console.log(row)
      var hasGoDetail // 记录是否已跳转过页面。若不执行这一步,则在跳转详情页后返回原页面就不能再次跳转新的详情页
      if (hasGoDetail) { // 已经跳转过
        hasGoDetail.close() // 关闭
      }
      hasGoDetail = window.open(`https://xxxx.xxxx.com/?id=${row.id}`, '_self')
    },
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐