vue2 使用window.location.href 新开窗口 跳转相同项目的另外一个页面,再router.beforeEnter里面能监听到from 参数吗
时间: 2024-09-13 16:14:42 浏览: 87
在 Vue 2 中,如果你想要在新开窗口跳转到项目内其他页面,并且想在路由的 `beforeEnter` 钩子函数中获取上一个页面的信息,这通常涉及到两个部分:事件触发和钩子函数的使用。
首先,当你通过 `window.location.href` 直接打开一个新的页面,Vue Router 的生命周期并不会自动触发。因此,在这种情况下,`beforeEnter` 这样的钩子不会被调用,因为页面还没有进入路由管理的阶段。
但是,你可以手动触发路由守卫,例如在新开窗口之前先执行一次导航。你可以创建一个全局的自定义事件,比如在当前页面的 beforeRouteLeave 或者 mounted 时期间发送这个事件,传递需要的数据:
```javascript
// 在当前组件的 beforeRouteLeave 或 mounted 函数里
this.$emit('open-new-window', { fromPath: this.$route.path });
// 在其他地方监听这个事件并跳转
document.addEventListener('open-new-window', (event) => {
const from = event.detail.fromPath;
// 然后在这里打开新的窗口,并携带 from 参数
window.open(`/your-route/${from}`, '_blank');
});
```
这样,在新页面的 `mounted` 生命周期钩子中,如果接收到了 `open-new-window` 事件,你就可以访问到 `fromPath` 数据了。
请注意,由于浏览器同源策略限制,从一个窗口直接修改另一个窗口的路由状态并不常见,这里只是提供了一种思路,实际应用中可能需要其他手段来处理数据传递。
阅读全文